标签:
1、什么是组件扫描
指定一个包路径,Spring会自动扫描该包及其子包所有组件类,当发现组件类定义前有特别的注解标记时,就将该组件纳入Spring容器。等价于原有XML配置中的<bean>定义功能。
组件扫描可以替代大量XML配置的<bean>定义
2、指定扫描类路径
使用组件扫描,首先需要在XML配置中指定扫描类路径
<context:componet-scan base-package="org.example"/>
上面配置,容器实例化时会自动扫描org.example包及其子包下的所有组件类
3、自动扫描的注解标记(见图示)
4、自动扫描组件的命名
当一个组件在扫描过程中被检测到时,会生成一个默认id值,默认id为小写开头的类名。也可以在注解标记中自定义id。
5、指定组件的作用域
通常受Spring管理的组件,默认的作用域是"singleton"。
如果需要其他的作用域可以使用@Scope注解,只要在注解中提供作用域的名称即可
6、初始化和销毁回调的控制
@PostConstruct和@PreDestroy注解标记分别用于指定初始化和销毁回调方法,使用示例
public class ExampleBean{
@PostConstrct
public void init(){//初始化回调方法}
@PreDestroy
public void destroy(){//销毁回调方法}
}
7、指定依赖注入关系
具有依赖关系的Bean对象,利用下面任意一种注解都可以实现关系注入
@Resouce
@Autowired/@Qualifier
@Inject/@Named
@Resouce注解标记可以用在字段定义或setter方法定义前面,默认首先按名称匹配你注入,然后类型匹配注入
当遇到多个匹配Bean时注入会发生错误,可以显式指定名称,例如@Resource(name="empDao1")
@Autowired注解标记也可以用在字段定义或setter方法定义之前,默认按类型匹配注入
@Autowired当遇到多个匹配Bean时,注入会发生错误可以适用于@Qualifier("mysqlUserDao")
@Inject注解标记是Spring3.0开始增添的对JSR-330标准的支持,使用前需要添加 JSR-330的jar包使用方法与@Autowired相似。
@Inject当遇到多个匹配Bean时注入会发生错误,可以使用@Named指定名称限定。
8、注入Spring表达式值
@Value注解可以注入Spring表达式值,使用方法
首先在XML配置中指定要注入的properties文件
<util:properties id="jdbcProps" location="classpath:db.properties"/>
然后在setter方法前使用@Value注解
例如:@Value("#{jdbcProps.url}")
9、
标签:
原文地址:http://www.cnblogs.com/Crow00/p/4564975.html