Правильно ли работает код в разделе «Что сработало»?

дую этой схеме в приложении Spring.

Запрос отправляется на сервер с идентификатором объекта и некоторыми другими параметрами для заполнения в этом объектеОбъект с этим идентификатором загружается из базы данныхгеттеры и сеттеры вызываются в этом объекте для заполнения значенийзатем объект сохраняется

Я спросил вэтот другой вопрос Какой был лучший способ подготовить объект, прежде чем заполнять параметры запроса. Ответ состоял в том, что лучшим способом было использоватьконверсионный сервис вместо того, чтобы делать это в аннотированном методе @ModelAtribute или с редактором в initBinder.

Поэтому я попытался использовать конвертер, но я не нашел аналогичного примера, и я немного застрял. Я написал код, подобный приведенному ниже: в привязке init я регистрирую службу преобразования. Поэтому перед заполнением значений в пользовательском объекте вызывается метод convert () для загрузки объекта из базы данных. Проблема в том, что эта конфигурация не работает, потому что она конвертирует id (поле имени пользователя) пользователя Object в пользователя Object, но затем пытается создать setUsername () с объектом, чтобы я получил «java.lang». .IllegalArgumentException: несоответствие типа аргумента ".

Может кто-нибудь дать мне подсказку или пример использования службы ConversionService для получения желаемого поведения?

Благодарю.

@Autowired
private ConversionService conversionService;

@InitBinder("user")
public void initBinder(@RequestParam("username")String username, WebDataBinder binder){
    binder.setConversionService(conversionService);
}

@RequestMapping(value="/user/save", method=RequestMethod.POST)
public String save(@ModelAttribute("user") User user, Model model) {        
    ...
}

с чем-то вроде:

@Component
public class UserConversionService implements ConversionService{
    ...        
    @Override
    public Object convert(Object name, TypeDescriptor arg1, TypeDescriptor arg2) {
        return userService.find((String)name); 
    }
}

Ответы на вопрос(2)

Ваш ответ на вопрос