码迷,mamicode.com
首页 > 其他好文 > 详细

基于注解的组件扫描

时间:2015-06-10 01:01:30      阅读:308      评论:0      收藏:0      [点我收藏+]

标签:

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!