[有书共读]JavaWeb高级编程
JavaWeb高级编程 -- 篇13
@Bean public LocalValidatorFactoryBean localValidatorFactoryBean() { LocalValidatorFactoryBean validator = new LocalValidatorFactoryBean(); validator.setProviderClass(HibernateValidator.class); return validator; }
Spring Framework使用了bean后处理器的概念,通过它可以在容器完成启动过程之前配置、自定义和替换配置中的bean。已配置的org.springframework.beans.factory.config.Bean-PostProcessor实现将在bean被注入到依赖它的其他bean之前执行。
你随时可以创建自己的约束注解,但Bean Validation API中已经提供了几个内建的注解,它们可以满足大多数常见的验证需求。所有这些约束都在javax.validation.constraints包中。
将限制注解用于方法验证时,必须总是标注在接口上,而不是实现上。
如果希望指定应该在方法执行时应用的验证组,可以在类上使用@javax.validation.GroupSequence和@ValidateOnExecution。另一方面,通过@Validated可以直接在其中指定验证组,而无须使用额外的注解,另外它可以为同一个控制器类中的不同MVC控制器方法参数指定不同的组。
如果只希望验证特定分组中的限制,那么可以在@Validated注解中指定这些分组。
@Validated({Default.class, Group.class}) public interface EmployeeService { ... }
在Bean验证中,限制可以继承另一个限制。当然,这与类的继承不同,因为注解是不能继承的。不过,根据惯例,限制注解通常包含一个目标ElementType.ANNOTATION_TYPE。在定位到限制注解时,Validator将决定注解定义上是否标注了任何其他限制。如果是这样,它将把所有的额外限制和原始限制中定义的逻辑合并成一个复合限制。在这种情况下,限制继承了它被标注的所有限制。如果出于某些原因需要创建一个不能被继承的限制,那么只需要在定义中忽略ElementType.ANNOTATION_TYPE即可。
#Java##读书笔记#