您的位置:首页 > 编程语言 > Java开发

SpringIOC——注入Bean配置

2015-05-30 22:50 417 查看

1. 基于成员的配置

<!-- 该 BeanPostProcessor 将自动起作用,对标注 @Autowired 的 Bean 进行自动注入 -->
<bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"/>
<!-- 对标注 @Resource 的 Bean 进行自动注入 -->
<bean class="org.springframework.context.annotation.CommonAnnotationBeanPostProcessor"/>
@Resource、
@PostConstruct
 以及 
@PreDestroy
,属于JSR-250规范定义的注释。
@PostConstruct 注释的方法将在类实例化后调用,而标注了 
@PreDestroy
 的方法将在类销毁之前调用。
当然,Spring 2.1还提供一种更方便的配置方法:
<context:annotation-config/>
这样就省去上面两种笨重的配置方式。

2. 基于类级别的配置

    此次改进由Spring 2.5提供。
@Component 有一个可选的入参,用于指定Bean 的名称,一般情况下,Bean 都是 singleton 的,需要注入 Bean 的地方仅需要通过 byType 策略就可以自动注入了,所以大可不必指定 Bean 的名称。
默认情况下通过 @Component
 定义的Bean 都是 singleton 的,如果需要使用其它作用范围的 Bean,可以通过 
@Scope
 注释来达到目标。
简化之后的配置文件只需一句话:
<context:component-scan base-package="com.baobaotao"/>
同时,该标签支持4中类型过滤方式:
注释假如 com.baobaotao.SomeAnnotation 是一个注释类,我们可以将使用该注释的类过滤出来。
类名指定通过全限定类名进行过滤,如您可以指定将 com.baobaotao.Boss 纳入扫描,而将 com.baobaotao.Car 排除在外。
正则表达式通过正则表达式定义过滤的类,如下所示: com\.baobaotao\.Default.*
AspectJ 表达式通过 AspectJ 表达式定义过滤的类,如下所示: com. baobaotao..*Service+
下面是一个简单的例子:
<context:component-scan base-package="com.baobaotao"><context:include-filter type="regex" expression="com\.baobaotao\.service\..*"/><context:exclude-filter type="aspectj" expression="com.baobaotao.util..*"/></context:component-scan>
值得注意的是 <context:component-scan/> 配置项不但启用了对类包进行扫描以实施注释驱动 Bean 定义的功能,同时还启用了注释驱动自动注入的功能(即还隐式地在内部注册了 
AutowiredAnnotationBeanPostProcessor
 和 
CommonAnnotationBeanPostProcessor
),因此当使用<context:component-scan/> 后,就可以将 <context:annotation-config/> 移除了。

3. 其他注解

Spring2.5除了@Component 之外,还有其他有特殊意义的注解:@Service、@Repository、@Controller,与@Component等效。
-------------------IBM技术阅读笔记
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: