明確にするために、ここで非常に素朴な概念的な質問があります。私のアプリでは現在、JSR 303 Hibernate Validator を使用して、ユーザー名、パスワードなどのチェックなど、@NotBlank および @NotNull アノテーションを使用してドメイン モデルを検証しています。
public class Admin {
private Long id;
@NotBlank(message = "Username should not be null")
private String username;
@NotBlank(message = "Username should not be null")
private String password;
...
しかし、既存のユーザー名などのドメイン ロジックを検証するために、Spring の Validator インターフェイスを引き続き使用しています。
@Component
public class AdminValidator implements Validator {
...
@Override
public void validate(Object target, Errors errors) {
Admin admin = (Admin) target;
if (usernameAlradyExist())){
errors.rejectValue("username", null, "This user already exist's in the system.");
}
}
コントローラーでは両方を使用しています
@RequestMapping(value = "/register", method = RequestMethod.POST)
public String register(@Valid @ModelAttribute("admin") Admin admin, BindingResult bindingResult,) {
validator.validate(admin, bindingResult);
if (bindingResult.hasErrors()) {
return REGISTER_ADMIN.getViewName();
}
Hibernate Validator を使用するだけで、ドメインロジックの検証に Spring Validator をまったく使用しないことは可能ですか?