@Autowired和@Resource的区别是什么?
来源:互联网 发布:天宇网络 编辑:程序博客网 时间:2024/05/21 21:36
@Autowired 与@Resource:
1、@Autowired与@Resource都可以用来装配bean. 都可以写在字段上,或写在setter方法上。
2、@Autowired默认按类型装配(这个注解是属于spring的),默认情况下必须要求依赖对象必须存在,如果要允许null值,可以设置它的required属性为false,如:
@Autowired(required=false) ,如果我们想使用名称装配可以结合@Qualifier注解进行使用,如下:
Java代码
3、@Resource 是JDK1.6支持的注解,默认按照名称进行装配,名称可以通过name属性进行指定,如果没有指定name属性,当注解写在字段上时,默认取字段名,按照名称查找,如果注解写在setter方法上默认取属性名进行装配。当找不到与名称匹配的bean时才按照类型进行装配。但是需要注意的是,如果name属性一旦指定,就只会按照名称进行装配。
1、@Autowired与@Resource都可以用来装配bean. 都可以写在字段上,或写在setter方法上。
2、@Autowired默认按类型装配(这个注解是属于spring的),默认情况下必须要求依赖对象必须存在,如果要允许null值,可以设置它的required属性为false,如:
@Autowired(required=false) ,如果我们想使用名称装配可以结合@Qualifier注解进行使用,如下:
Java代码
@Autowired() @Qualifier("baseDao") private BaseDao baseDao;
只不过注解处理器我们使用的是Spring提供的,是一样的,无所谓解耦不解耦的说法,两个在便利程度上是等同的。
Java代码
他们的主要区别就是@Autowired是默认按照类型装配的 @Resource默认是按照名称装配的
byName 通过参数名 自动装配,如果一个bean的name 和另外一个bean的 property 相同,就自动装配。
byType 通过参数的数据类型自动自动装配,如果一个bean的数据类型和另外一个bean的property属性的数据类型兼容,就自动装配
Java代码
@Resource(name="baseDao") private BaseDao baseDao;
byName 通过参数名 自动装配,如果一个bean的name 和另外一个bean的 property 相同,就自动装配。
byType 通过参数的数据类型自动自动装配,如果一个bean的数据类型和另外一个bean的property属性的数据类型兼容,就自动装配
作者:wuxinliulei
链接:https://www.zhihu.com/question/39356740/answer/80926247
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
链接:https://www.zhihu.com/question/39356740/answer/80926247
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
如果你想使用@Autowired注解,那么就必须事先在 Spring 容器中声明 AutowiredAnnotationBeanPostProcessor Bean。传统声明方式如下
<bean class="org.springframework.beans.factory.annotation. AutowiredAnnotationBeanPostProcessor "/>
如果想使用@ Resource 、@ PostConstruct、@ PreDestroy等注解就必须声明CommonAnnotationBeanPostProcessor
<bean class="org.springframework.beans.factory.annotation. CommonAnnotationBeanPostProcessor"/>
如果想使用@PersistenceContext注解,就必须声明PersistenceAnnotationBeanPostProcessor的Bean。
<bean class="org.springframework.beans.factory.annotation.PersistenceAnnotationBeanPostProcessor"/>
如果想使用 @Required的注解,就必须声明RequiredAnnotationBeanPostProcessor的Bean。
同样,传统的声明方式如下:
<bean class="org.springframework.beans.factory.annotation.RequiredAnnotationBeanPostProcessor"/>
作者:wuxinliulei
链接:https://www.zhihu.com/question/39356740/answer/80926247
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
阅读全文
0 0
- @Autowired和@Resource的区别是什么?
- @resource和@autowired的区别是什么
- @Autowired和@Resource的区别是什么?
- @Autowired和@Resource的区别是什么?
- spring中@Resource和@Autowired的区别是什么?
- @Resource和@Autowired的区别
- @Resource和@Autowired的区别
- @autowired和@resource的区别
- @autowired和@resource的区别
- @autowired和@resource的区别
- @autowired和@resource的区别
- @autowired和@resource的区别
- @Resource和@Autowired的区别
- @Resource和@Autowired的区别
- @Resource和@Autowired的区别
- @Resource和@Autowired的区别
- @Resource和@Autowired的区别
- @Autowired 和 @Resource 的区别
- 关于在工作中使用dubbo和zookeeper的一些理解
- 常用网址
- Spring-loaded实现热部署-开发环境
- jquery语法
- 被2345篡改主页
- @Autowired和@Resource的区别是什么?
- 51Nod-1066-Bash游戏
- python split() 分割
- apt-get指令
- VBA中汉字转成拼音
- 各种安卓框布局颜色
- 第八篇:深入浅出UML类图(五)
- 上海共享单车坟墓:无人问津,无人处理---众智云
- 深度学习哪家强?吴恩达、Udacity和Fast.ai