У меня есть объектный класс домена Пользователь
(это объект JPA):
@Entity
public class User {
private String name;
private boolean enabled = true;
// getters/setters
}
И я пытаюсь предложить REST API, чтобы разрешить клиентов для создания новых пользователей с использованием Spring 3 MVC:
@Controller
public class UserController {
@RequestMapping(value="/user", method=RequestMethod.POST)
@ResponseBody
public String createRealm(@RequestBody User user) {
user.setEnabled(true); // client is not allowed to modify this field
userService.createUser(user);
...
}
}
Он отлично работает, но я не знаю, стоит ли использовать объекты домена как @RequestBody , потому что мне нужно защитить некоторые поля, которые не должны напрямую изменяться клиентом (т. е. "включены" в данном случае).
Каковы плюсы / минусы этих альтернатив:
Вторая альтернатива выглядит так:
@Entity
public class User {
private String name;
private boolean enabled = true;
// getters/setters
}
public class UserRequest {
private String name;
// enabled is removed
// getters/setters
}
@Controller
public class UserController {
@RequestMapping(value="/user", method=RequestMethod.POST)
@ResponseBody
public String createRealm(@RequestBody UserRequest userRequest) {
User user = ... // map UserRequest -> User
userService.createUser(user);
...
}
}
Есть ли другие путь, который избегает дублирование кода и его легче поддерживать?