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 的方法将在类销毁之前调用。 |
<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技术阅读笔记
相关文章推荐
- java解析XML--jsoup
- javase 小知识2
- CSV文件练手
- javase 知识1
- java父类引用指向子类对象
- java父类引用指向子类对象
- Java调用调用了VB.netdll的C#dll的可行性
- 2015第22周六Java反射、泛型、容器简介
- Java中的克隆close()和赋值引用的区别
- JAVA编码规范
- Spring 事务机制详解
- 利用java反射机制实现读取excel表格中的数据
- 利用java反射机制实现读取excel表格中的数据
- 【编程语言-Java】Java线程创建方式及对比
- 【编程语言-Java】ThreadPoolExecutor介绍与实例
- 【编程语言-Java】Java创建线程的两个方法
- Java代码 实现直接选择排序
- java model2用户登录简单实例
- Java for LeetCode 129 Sum Root to Leaf Numbers
- Java RandomAccessFile用法