【JAVA】Spring 自动注入类注释详解
2017-06-19 11:26
567 查看
首先在Spring配置文件中使用
<context:component-scan base-package="需要扫描的目录" />
声明启动包扫描功能。<context:component-scan/> 配置项不但启用了对类包进行扫描以实施注释驱动 Bean 定义的功能,同时还启用了注释驱动自动注入的功能(即还隐式地在内部注册了AutowiredAnnotationBeanPostProcessor 和 CommonAnnotationBeanPostProcessor)。
下面来说明自动注入类注释的区别
@Autowired
Spring 2.5 引入了 @Autowired 注释,它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。
@Resource
@Resource 的作用相当于 @Autowired,只不过 @Autowired 按 byType 自动注入,面@Resource 默认按 byName 自动注入罢了。@Resource 有两个属性是比较重要的,分别是 name 和 type,Spring 将@Resource 注释的 name 属性解析为 Bean 的名字,而 type 属性则解析为 Bean 的类型。所以如果使用 name 属性,则使用 byName 的自动注入策略,而使用 type 属性时则使用 byType 自动注入策略。如果既不指定
name 也不指定 type 属性,这时将通过反射机制使用 byName 自动注入策略。
Resource 注释类位于 Spring 发布包的 lib/j2ee/common-annotations.jar 类包中,因此在使用之前必须将其加入到项目的类库中。
以下四个注释功能基本相同,都是注释在类上。
@Repository
@Repository 只能标注在 DAO 类上。这是因为该注解的作用不只是将类识别为 Bean,同时它还能将所标注的类中抛出的数据访问异常封装为 Spring 的数据访问异常类型。 Spring 本身提供了一个丰富的并且是与具体的数据访问技术无关的数据访问异常结构,用于封装不同的持久层框架抛出的异常,使得异常独立于底层的框架。
@Component
@Component 是一个泛化的概念,仅仅表示一个组件 (Bean) ,可以作用在任何层次。
@Service
@Service 通常作用在业务层,但是目前该功能与 @Component 相同。
@Constroller
@Constroller 通常作用在控制层,但是目前该功能与 @Component 相同。
<context:component-scan base-package="需要扫描的目录" />
声明启动包扫描功能。<context:component-scan/> 配置项不但启用了对类包进行扫描以实施注释驱动 Bean 定义的功能,同时还启用了注释驱动自动注入的功能(即还隐式地在内部注册了AutowiredAnnotationBeanPostProcessor 和 CommonAnnotationBeanPostProcessor)。
下面来说明自动注入类注释的区别
@Autowired
Spring 2.5 引入了 @Autowired 注释,它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。
@Resource
@Resource 的作用相当于 @Autowired,只不过 @Autowired 按 byType 自动注入,面@Resource 默认按 byName 自动注入罢了。@Resource 有两个属性是比较重要的,分别是 name 和 type,Spring 将@Resource 注释的 name 属性解析为 Bean 的名字,而 type 属性则解析为 Bean 的类型。所以如果使用 name 属性,则使用 byName 的自动注入策略,而使用 type 属性时则使用 byType 自动注入策略。如果既不指定
name 也不指定 type 属性,这时将通过反射机制使用 byName 自动注入策略。
Resource 注释类位于 Spring 发布包的 lib/j2ee/common-annotations.jar 类包中,因此在使用之前必须将其加入到项目的类库中。
以下四个注释功能基本相同,都是注释在类上。
@Repository
@Repository 只能标注在 DAO 类上。这是因为该注解的作用不只是将类识别为 Bean,同时它还能将所标注的类中抛出的数据访问异常封装为 Spring 的数据访问异常类型。 Spring 本身提供了一个丰富的并且是与具体的数据访问技术无关的数据访问异常结构,用于封装不同的持久层框架抛出的异常,使得异常独立于底层的框架。
@Component
@Component 是一个泛化的概念,仅仅表示一个组件 (Bean) ,可以作用在任何层次。
@Service
@Service 通常作用在业务层,但是目前该功能与 @Component 相同。
@Constroller
@Constroller 通常作用在控制层,但是目前该功能与 @Component 相同。
相关文章推荐
- [Java] Spring 3.0 /id.vs.name/简单属性的注入/bean中的scope属性/集合注入/自动装配/生命周期/
- java 反射 模拟spring自动注入
- java-spring与mongodb的整合方式一 自动注入xml
- Java注解机制之Spring自动装配实现原理详解
- java定时器无法自动注入的问题解析(原来Spring定时器可以这样注入service)
- [JAVA][Spring]Spring 3.0 注解注入详解
- 详解Java Spring各种依赖注入注解的区别
- 详解Java Spring各种依赖注入注解的区别
- JAVA的Spring注入机制事例详解
- Spring自动注入,利用注解实现spring基本配置详解,Spring注解快速入门
- JAVA Spring MVC Thread 解决自动注入问题
- java 反射 模拟spring自动注入
- java定时器无法自动注入的问题解析(原来Spring定时器可以这样注入service)
- 不同的包下有文件名相同的java类,spring自动注入会报错
- java的反射原理与Spring的自动注入(转载)
- java-spring与mongodb的整合方式一 自动注入xml
- [Java] Spring 3.0 /id.vs.name/简单属性的注入/bean中的scope属性/集合注入/自动装配/生命周期/
- 不同的包下有文件名相同的java类,spring自动注入会报错
- java 反射,spring 自动注入原理
- Eclipse Java注释模板设置详解