【开发日记】Spring中@Autowired和@Resource
全栈开发日记
共 1175字,需浏览 3分钟
·
2022-08-03 19:36
区别
1- 提供方不同
1.1、@Autowired
注解由Spring提供,所属包:
org.springframework.beans.factory.annotation
1.2、@Resource
注解由JDK提供,所属包:
javax.annotation
2- 导入方式不同
2.1、@Autowired
注解只能按照类型注入,如果需要使用此注解按名称注入的话则需要搭配@Qualifier
来实现按名称注入。
2.2、@Resource
注解默认使用名称注入,但也可以使用类型注入。
名称注入:
@Resource(name="AutowiredTestImpl1")
private AutowiredTest autowiredTest;
类型注入:
@Resource(type=AutowiredTest.class)
private AutowiredTest autowiredTest;
类型和名称同时指定:
@Resource(type=AutowiredTest.class,name = "AutowiredTestImpl1")
private AutowiredTest autowiredTest;
当类型与名称同时指定时,会找到唯一符合的bean进行注入。
强制注入默认情况下,会在应用启动时@Autowired
和@Resource
注解会在IOC容器中查找相对应的Bean,如果没有则报错。
使用@Autowired
注解可以设置非强制注入,该注解的required
属性默认值为true,表示强制注入;将该属性值改为false后,在应用启动时如果有这个Bean就注入,没有就跳过,不会报错。
@Autowired(required = false)
private AutowiredTest autowiredTest;
多个符合条件的Bean1- 问题
使用@Autowired
时如果容器中有两个或两个以上的Bean符合注入条件,会报错如下:
expected single matching bean but found 2
表示期望一个Bean,但是找到两个。
2- 解决
2.1、使用@Primary
注解设置主要Bean;当发现多个符合条件的Bean时,那么优先注入被@Primary
注解的Bean。
@Component
@Primary
public class AutowiredTestImpl1 implements AutowiredTest...
2.2、配合@Qualifier
注解,实现的效果如同使用@Resource
对name和type都进行了设置。
@Autowired
@Qualifier("AutowiredTestImpl1")
private AutowiredTest autowiredTest;
评论
.NET 8来了,开发一套基于.NET
前言 .NET 8来了,开发一套基于.NET 8的快速开发框架吧,就叫Simple:https://gitee.com/VCodeWork/simple-framework 框架由来 为啥有了那么多开发框架,还得非要再搞个呢,大家都知道很多快速开发框架,啥ABP 啥水...
llovebo
0
银川便民信息平台、吴忠便民平台、中
各地微信号:兰州weibang78西宁wbpt123新疆xjwb99银川bainmin50武威cairen0123白银bianmin9临夏linxia900郑州weibang_99驻马店hainn_1217微信便民信息平台,专业朋友圈推广,各城市生活便民信息发布,做推广的客户请...
哈振荣
0
银川便民信息平台
兰 州地区各区县便民信息平台 兰州微生活微信号:lanzhou50、兰州便民信息微信号:lzweibang1、兰州信息港微信号:gansu58、兰州微帮weibang78(人已满)兰州永登微帮lzbm800、兰州新区give0931 ( 兰州lzbm800 、微...
哈振荣
0
BugBug社区2.0上线
ios下载地址:https://apps.apple.com/cn/app/bugbug/id1541693320安卓推荐下载地址:https://a.app.qq.com/o/simple.jsp?pkgname=group.xianglian.bugbug欢迎体验官在BugBug社区给我们提宝贵的意见:)
yumy
0