【第十二章】零配置 之 12.3 注解实现Bean定义 ——跟我学spring3
前边介绍的Bean定义全是基于XML方式定义配置元数据,且在【12.2注解实现Bean依赖注入】一节中介绍了通过注解来减少配置数量,但并没有完全消除在XML配置文件中的Bean定义,因此有没有方式完全消除XML配置Bean定义呢?
?
Spring提供通过扫描类路径中的特殊注解类来自动注册Bean定义。同注解驱动事务一样需要开启自动扫描并注册Bean定义支持,使用方式如下(resources/chapter12/ componentDefinitionWithAnnotation.xml):
?
java代码:图12-1 Spring自带的@Component注解及扩展
?
?
图12-2 JSR-250中定义的@ManagedBean注解及自定义扩展
?
?
图12-3 JSR-330的@Named注解及自定义扩展
?
图12-2和图12-3中的自定义扩展部分是为了配合Spring自带的模式注解扩展自定义的,并不包含在Java EE 6规范中,在Java EE 6中相应的服务层、DAO层功能由EJB来完成。
?
在Java EE中有些注解运行放置在多个地方,如@Named允许放置在类型、字段、方法参数上等,因此一般情况下放置在类型上表示定义,放置在参数、方法等上边一般代表使用(如依赖注入等等)。
??12.3.2? Spring自带的@Component注解及扩展一、@Component:定义Spring管理Bean,使用方式如下:
?
java代码:java代码:java代码:java代码:java代码:java代码:java代码:java代码:java代码:java代码:java代码:java代码:java代码:java代码:java代码:java代码:java代码:java代码:java代码:
默认情况下将自动过滤@Component、@ManagedBean、@Named注解的类并将其注册为Spring管理Bean,可以通过在<context:component-scan>标签中指定自定义过滤器将过滤到匹配条件的类注册为Spring管理Bean,具体定义方式如下:
?
java代码:?
一般情况下没必要进行自定义过滤,如果需要请参考如下示例:
?
1、cn.javass.spring.chapter12.TestBean14自动注册为Spring管理Bean:
?
java代码:?
2、把所有注解为org.aspectj.lang.annotation.Aspect自动注册为Spring管理Bean:
?
java代码:java代码:?
?
4、将把匹配到aspectj表达式“cn.javass.spring.chapter12.TestBean3*”排除,不注册为Spring管理Bean:
?
java代码:?
具体使用就要看项目需要了,如果以上都不满足需要请考虑使用自定义过滤器。
??12.3.6? 提供更多的配置元数据1、@Lazy:定义Bean将延迟初始化,使用方式如下:
?
java代码:java代码:java代码:java代码:java代码:5 楼 wanglu271991027 2012-03-23 楼主 辛苦了 6 楼 jinnianshilongnian 2012-03-23 wanglu271991027 写道楼主 辛苦了
确实很辛苦 都木有周末休息 哈哈哈
为人民服务