dimanche 8 mars 2015

Spring MVC - lookup validators automatically

Suppose I have a sample entity class like this:



public class Address {
...
}


and a corresponding validator:



@Component
public AddressValidator implements Validator {

@Override
public boolean supports(Class<?> entityClass) {
return entityClass.equals(Address.class);
}

@Override
public void validate(Object obj, Errors errors) {
...
}
}


When I use a controller like the following, everything works:



@RestController
@RequestMapping("/addresses")
public class AddressController {

@Autowired
private AddressValidator validator;

@InitBinder
protected void initBinder(WebDataBinder binder) {
binder.setValidator(validator);
}

@RequestMapping(method=POST)
public Long addNewAddress(@Valid @RequestBody Address address) {
...
}
}


However, if I omit the validator registering part (i.e. the following), validation is not performed.



@Autowired
private AddressValidator validator;

@InitBinder
protected void initBinder(WebDataBinder binder) {
binder.setValidator(validator);
}


Having to register validators manually seems pointless. Can I instruct Spring to look up validators automatically (similar to how controllers are looked up)?


It's a Spring Boot based application.


Aucun commentaire:

Enregistrer un commentaire