2008-03-16
【总结】使用 Spring 2.5 注释驱动的 IoC 功能
关键字: spring, annotation
原来也看过关于 Spring 2.5 关于注释方面的新特性,但是一直没有一个全面的了解。看完了 IBM developerWorks 上的《使用 Spring 2.5 注释驱动的 IoC 功能》 后,对这方面的知识有了全面的了解。下面我对这篇文章做一个总结,也是对所学的东西的一个巩固。
使用注释驱动 IoC,相对于使用 XML 配置文件的好处是更加简练,对开发人员更加友好,不必在配置文件和代码之间来回切换。但是注释只能用于自己编写的代码,对于第三方类就不能使用了。同时,对于经常会发生变动的配置,也不宜使用注释。
使用注释之前,需要在 Spring Context 配置文件中设置对注释的支持。Spring 2.5 提供了 AutowiredAnnotationBeanPostProcessor、CommonAnnotationBeanPostProcessor、 PersistenceAnnotationBeanPostProcessor 和 RequiredAnnotationBeanPostProcessor 这四个主要的关于 Annotation 的 BeanPostProcessor。我们可以使用 <context:annotation-config /> 来方便地、一次性的声明者四个 BeanPostProcessor。Autowired... 提供对 Spring 特有的 Autowired 和 Qualifier 注释。CommonAnotation... 用于支持 JSR 250 的注释。Persistence... 和 Required... 在本文中没有说明,前者用于 JPA 的 PersistenceUnit 和PersistenceContext 注释;后者用于检查被 Required 注释标记的属性是否被设定。
但是用传统的 <bean> 去声明这些 PostProcessor 的做法并不简洁,Spring 2.5 为我们提供了更加简介的方法:<context:annotation-config />。
在具体的 Annotation 使用方面,我们可以使用 Spring 2.5 的 @Autowired 来标记我们需要注入的 Bean,它可以应用在 setter 方法或者构造方法上。我们也可以使用 JSR 250 的 @Resource 来实现相同的目的。这两个 Annotation 之间最大的不同在于 @Autowired 是 by-type 的,@Resource 是 by-name 的。在使用 @Autowired 的时候需要主要 Bean 不唯一的情况。
JSR 250 还有两个比较重要的 Annotation:@PostConstruct 和 PreDestroy,这里就不多说了。
上面提到的 @Autowired 和 @Resource 解决了 Bean 注入的问题,但是还没有为 Bean 的声明提供一条简洁的途径。@Component 实现了这一点。
但如果要使用 @Component,我们要在 applicationContext*.xml 里加入 <context:component-scan />,Spring 配置文件的终极简化。
使用注释驱动 IoC,相对于使用 XML 配置文件的好处是更加简练,对开发人员更加友好,不必在配置文件和代码之间来回切换。但是注释只能用于自己编写的代码,对于第三方类就不能使用了。同时,对于经常会发生变动的配置,也不宜使用注释。
使用注释之前,需要在 Spring Context 配置文件中设置对注释的支持。Spring 2.5 提供了 AutowiredAnnotationBeanPostProcessor、CommonAnnotationBeanPostProcessor、 PersistenceAnnotationBeanPostProcessor 和 RequiredAnnotationBeanPostProcessor 这四个主要的关于 Annotation 的 BeanPostProcessor。我们可以使用 <context:annotation-config /> 来方便地、一次性的声明者四个 BeanPostProcessor。Autowired... 提供对 Spring 特有的 Autowired 和 Qualifier 注释。CommonAnotation... 用于支持 JSR 250 的注释。Persistence... 和 Required... 在本文中没有说明,前者用于 JPA 的 PersistenceUnit 和PersistenceContext 注释;后者用于检查被 Required 注释标记的属性是否被设定。
但是用传统的 <bean> 去声明这些 PostProcessor 的做法并不简洁,Spring 2.5 为我们提供了更加简介的方法:<context:annotation-config />。
在具体的 Annotation 使用方面,我们可以使用 Spring 2.5 的 @Autowired 来标记我们需要注入的 Bean,它可以应用在 setter 方法或者构造方法上。我们也可以使用 JSR 250 的 @Resource 来实现相同的目的。这两个 Annotation 之间最大的不同在于 @Autowired 是 by-type 的,@Resource 是 by-name 的。在使用 @Autowired 的时候需要主要 Bean 不唯一的情况。
JSR 250 还有两个比较重要的 Annotation:@PostConstruct 和 PreDestroy,这里就不多说了。
上面提到的 @Autowired 和 @Resource 解决了 Bean 注入的问题,但是还没有为 Bean 的声明提供一条简洁的途径。@Component 实现了这一点。
但如果要使用 @Component,我们要在 applicationContext*.xml 里加入 <context:component-scan />,Spring 配置文件的终极简化。
发表评论
- 浏览: 6934 次
- 性别:

- 来自: 北京

- 详细资料
搜索本博客
我的相册
BPMS 架构
共 1 张
共 1 张
最近加入圈子
最新评论
-
也谈算法的重要性
-- by ryuluck -
看了看《Seam in Action》 ...
期待
-- by 打倒小日本 -
EJB 3.0 与 Seam-managed ...
留个足迹 便于以后参谋
-- by isky -
将 Seam Messages 示例转 ...
谢谢,分享经验
-- by huochai -
学习 Spring 2.5 的新特性 ...
[b][/b]dad
-- by jspzhao






评论排行榜