In Jersey 2 it is possible to do this:
@GET @PATH("user/{email}") public IDto getUser(@NotNull @Email @PathParam("email") String validEmail) { return userManagementService.findUserByEmail(validEmail); } But I cannot make something similar to work in Spring MVC, it seems that the validation is only done when providing an object in @RequestBody or using an SpringMVC Form, for example the following won't work:
@RequestMapping(value="/user/{email}", method = RequestMethod.GET) public @ResponseBody IDto getUser(@NotNull @Email @PathVariable String validEmail) { return userManagementService.findUserByEmail(validEmail); } There are other similar questions, but those seem to be oriented to Spring MVC UI applications, in my case it is only a REST API which returns JSON response so I don't have any View to map/bind to the controller.
@Valid, though this might only work if you have a model class and not just aString.