工作学习系列一,关于spring的@Autoawared和@Resource
来源:互联网 发布:淘宝裤子褶皱平铺拍摄 编辑:程序博客网 时间:2024/06/06 03:30
最近在开发中遇到了很多地方利用到了spring来管理容器中的bean的情况。一般情况下,现再流行采用注解的形式进行bean的注入和管理,当然也会用到xml的方式进行bean的配置。
今天就复习一下关于spring的@AutoAwared,@Qualifer和jdk中的@Resource注解
关于spring @AutoAwared和@Qualifier,以及jdk中的@Resource注解的区别
在Java代码中可以使用@Resource或者@Autowired注解方式来经行注入。虽然@Resource和@Autowired都可以来完成注入依赖,但它们之间是有区别的。首先来看一下:
a。@Resource默认是按照名称来装配注入的,只有当找不到与名称匹配的bean才会按照类型来装配注入;(何为按照名称进行装配?我们知道在使用@component,@Service,@Repository以及@Controller注解的形式把bean纳入IOC容器进行管理的时候会在注解里面添加上名称的,这个名称就是所谓的名称,此外在xml中配置的bean中会有id的形式,这个id也可以看做是bean的名称。
b。@Autowired默认是按照类型装配注入的,如果想按照名称来转配注入,则需要结合@Qualifier一起使用;(不然会报错的)
c。@Resource注解是又J2EE提供,而@Autowired是由spring提供,故减少系统对spring的依赖建议使用@Resource的方式;
@Autowire 默认按照类型装配,默认情况下它要求依赖对象必须存在如果允许为null,可以设置它required属性为false,如果我们想使用按照名称装配,可以结合@Qualifier注解一起使用;
@Resource默认按照名称装配,当找不到与名称匹配的bean才会按照类型装配,可以通过name属性指定,如果没有指定name属 性,当注解标注在字段上,即默认取字段的名称作为bean名称寻找依赖对象,当注解标注在属性的setter方法上,即默认取属性名作为bean名称寻找依赖对象.
注意:如果没有指定name属性,并且按照默认的名称仍然找不到依赖的对象时候,会回退到按照类型装配,但一旦指定了name属性,就只能按照名称装配了.
配置的bean中id的作用:bean中id就是名称。等同于类上标注的注解。
关于抽象类和接口类型:由于spring是采用反射的机制生成对象并为对象所依赖的属性注入值,而抽象类在反射的这一步就会出错。抽象类是不能创建实例的。
- 工作学习系列一,关于spring的@Autoawared和@Resource
- Spring学习系列:错误记录(二) : 类路径和resource目录的关系
- Spring学习3_Spring 注释 @Autowired 和@Resource 的区别
- spring基础学习一(spring工作的基本原理)
- 关于Spring的注解@Resource的问题
- Memcache的学习系列(一):Memcache工作原理
- 关于学习和工作的思考
- 关于自己的学习和工作
- 关于工作和学习的相关思考
- 学习Spring框架系列(一):通过Demo阐述IoC和DI的优势所在
- 关于spring的@resource注解的字段注入和setter注入的区别
- Spring 中关于@Resource注解,以及其和@Autowired注解的区别
- Spring学习系列-----(一)Spring概述
- Spring学习系列(一) Spring简介
- Spring注解@Component和@resource的使用
- Spring注解@Resource和@Autowire的区别
- Spring注解:@Autowired和@Resource的区别
- Spring 注释 @Autowired 和@Resource 的区别
- python内置函数总结
- 快慢指针及找循环节点
- 我的流水账---城市浅薄记忆(二)
- javaScript 基础
- Android中WebView的使用
- 工作学习系列一,关于spring的@Autoawared和@Resource
- struts1 配置 websocket
- linux下make工具使用系列3
- 栈的基本操作(一)
- 观察者模式
- 自定义view
- Java中如何遍历Map对象的4种方法
- Linux 目录结构
- 并查集