论坛首页 Java企业应用论坛

Spring开闭原则的表现-BeanPostProcessor扩展点-1

浏览 39382 次
精华帖 (8) :: 良好帖 (2) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2012-04-20  
kjj 写道
jinnianshilongnian 写道
kjj 写道
aop思想的延伸,参与bean创建事件,给用户一个修改bean的机会!!

应该是Spring一直遵循的开闭原则,对扩展开放,对修改关闭。就如SpringMVC一样。提供很多扩展点

你可以得到bean,对修改关闭,怎么理解,怎么个关闭法!!??


7、BeanValidationPostProcessor
默认不自动注册,Spring3.0开始支持。

提供对JSR-303验证规范支持。

根据afterInitialization是false/true决定调用postProcessBeforeInitialization或postProcessAfterInitialization来通过JSR-303规范验证Bean,默认false。
8、MethodValidationPostProcessor
Spring3.1开始支持,且只支持Hibernate Validator 4.2及更高版本,从Spring 3.2起可能将采取自动检测Bean Validation 1.1兼容的提供商且自动注册(Bean Validation 1.1 (JSR-349)正处于草案阶段,它将提供方法级别的验证,提供对方法级别的验证),目前默认不自动注册。

Bean Validation 1.1草案请参考http://jcp.org/en/jsr/detail?id=349    http://beanvalidation.org/。

提供对方法参数/方法返回值的进行验证(即前置条件/后置条件的支持),通过JSR-303注解验证,使用方式如:
public @NotNull Object myValidMethod(@NotNull String arg1, @Max(10) int arg2)

默认只对@org.springframework.validation.annotation.Validated注解的Bean进行验证,我们可以修改validatedAnnotationType为其他注解类型来支持其他注解验证。而且目前只支持Hibernate Validator实现,在未来版本可能支持其他实现。

有了这东西之后我们就不需要在进行如Assert.assertNotNull()这种前置条件/后置条件的判断了。
9、ScheduledAnnotationBeanPostProcessor
当配置文件中有<task:annotation-driven>自动注册或@EnableScheduling自动注册。

提供对注解@Scheduled任务调度的支持。

postProcessAfterInitialization:通过查找Bean对象类上的@Scheduled注解来注册任务调度方法(仅返回值为void且方法是无形式参数的才可以)。

可参考Spring官方文档的任务调度章节学习@Scheduled注解任务调度。


如在写的其他BeanPostProccessor。 可以看出可以扩展N多功能 欢迎讨论
0 请登录后投票
   发表时间:2012-04-20  
LZ的好学的精神真值得学习,顶你
0 请登录后投票
   发表时间:2012-04-21  
grzrt 写道
LZ的好学的精神真值得学习,顶你

别光顶,来点实质的干货  ,一起探讨下
0 请登录后投票
   发表时间:2012-04-23  
Spring 的方法,类名字又多又长,看的头大,看过就忘。
0 请登录后投票
   发表时间:2012-04-24  
yxb1990 写道
Spring 的方法,类名字又多又长,看的头大,看过就忘。

还好吧 spring分模块 分包做的到位,包前缀直接忽略 
0 请登录后投票
   发表时间:2012-08-06  
lz我想问下
假如我们使用了多个的BeanPostProcessor的实现类,那么如何确定处理顺序呢?
0 请登录后投票
   发表时间:2012-08-06  
BeanFactory中和ApplicationContext中对BeanPostProcessor的处理的不同处在于那些?
0 请登录后投票
   发表时间:2012-08-06  
liuwuhen 写道
lz我想问下
假如我们使用了多个的BeanPostProcessor的实现类,那么如何确定处理顺序呢?

实现Order接口
0 请登录后投票
   发表时间:2012-08-06   最后修改:2012-08-06
liuwuhen 写道
BeanFactory中和ApplicationContext中对BeanPostProcessor的处理的不同处在于那些?


BeanFactory仅仅是个Bean的工厂(因此核心在提供Bean),ApplicationContext接口继承了BeanFactory。

BeanPostProcessor仅仅是ApplicationContext在创建Bean时 插入的扩展点。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics