当前位置:网站首页>@Resource和@Autowired注解的不同,为什么推荐@Resource?
@Resource和@Autowired注解的不同,为什么推荐@Resource?
2022-06-25 06:41:00 【jack_bob】
2者都可以用来装配bean,在接口仅有单一实现类时,两个注解的修饰效果相同,可以互相替换,不影响使用。
1.
@Autowired默认按类型装配(这个注解是属业spring的),默认情况下必须要求依赖对象必须存在,如果要允许null值,可以设置它的required属性为false,如:@Autowired(required=false) ,如果我们想使用名称装配可以结合@Qualifier注解进行使用
@Resource(这个注解属于J2EE的),默认按照名称进行装配,名称可以通过name属性进行指定,如果没有指定name属性,当注解写在字段上时,默认取字段名进行安装名称查找,如果注解写在setter方法上默认取属性名进行装配。当找不到与名称匹配的bean时才按照类型进行装配。但是需要注意的是,如果name属性一旦指定,就只会按照名称进行装配。
当一个接口有2个实现的情况:
举例:
一个接口:
public interface UserDao {
public void insert();
}
实现1:
@Repository("userJdbcDao")
public class UserJdbcDao implements UserDao{
@Override
public void insert() {
System.out.println("我是-jdbc-Dao-实现插入操作");
}
}
实现2:
@Repository("userJndiDao")
public class UserJndiDao implements UserDao{
@Override
public void insert() {
System.out.println("我是-jndi-Dao-实现插入操作");
}
}
service类:
@Service("userService")
public class UserService {
@Autowired
@Qualifier("userJdbcDao")
private UserDao userDao=null;
public void createUser(){
userDao.insert();
}
}
1.此时ide 会检测出你注入的Dao不是唯一,可以采用@Qualifier注解配合使用,指定你要注入哪个dao
2.也可以在实现接口的类上使用:
@Primary 出现冲突时候优先使用哪个实现类
推荐使用:@Resource:
实现类:@Repository(“userJdbcDao”)和service的@Resource(name=“userJdbcDao”) 一定要保持一致
UserJdbcDao 实现类名不一样也不影响
@Repository("userJdbcDao") //生命beanId
public class UserJdbcDao implements UserDao{
@Override
public void insert() {
System.out.println("我是-jdbc-Dao-实现插入操作");
}
}
@Service("userService")
public class UserService {
@Resource(name="userJdbcDao")
private UserDao userDao=null;
public void createUser(){
userDao.insert();
}
}
@SpringBootTest
class TestApplicationTests {
@Resource(name="userService")
private UserService userService;
@Test
public void testcreateUser(){
userService.createUser();
}
}
代码:
测试代码源码地址
文章来自于It老齐001
边栏推荐
- Elk + filebeat log parsing, log warehousing optimization, logstash filter configuration attribute
- realsense d455 semantic_slam实现语义八叉树建图
- Audio (V) audio feature extraction
- smartBugs安装小问题总结
- Tuwei Digital Isolator and interface chip can perfectly replace imported brands Ti and ADI
- Vscode official configuration synchronization scheme
- test
- 基于地面点稀少的LiDAR点云的茂密森林蓄积量估算
- useMemo模拟useCallback
- (tool class) quickly add time to code in source insight
猜你喜欢

OpenCV每日函数 结构分析和形状描述符(8) fitLine函数 拟合直线

Vscode official configuration synchronization scheme

NPM install reports an error: gyp err! configure error

Fairmot yolov5s to onnx

一“石”二“鸟”,PCA有效改善机载LiDAR林下地面点部分缺失的困局

realsense d455 semantic_ Slam implements semantic octree mapping

Evolution of Alibaba e-commerce architecture

Full range of isolator chips with integrated isolated power supply

Sichuan Tuwei ca-is3105w fully integrated DC-DC converter
![[batch dos-cmd command - summary and summary] - add comment command (REM or::)](/img/e9/151885ecd490b0aa83cce0f3a49124.png)
[batch dos-cmd command - summary and summary] - add comment command (REM or::)
随机推荐
NPM install reports an error: gyp err! configure error
(tool class) use SecureCRT as the communication medium
[batch dos-cmd command - summary and summary] - CMD window setting and operation commands (CD, title, mode, color, pause, CHCP, exit)
Tuwei Digital Isolator and interface chip can perfectly replace imported brands Ti and ADI
Storage of Galileo broadcast ephemeris in rtklib-b33
Evolution of Alibaba e-commerce architecture
Chuantuwei ca-is3720lw alternative material No. iso7820fdw
php入门基础记录
【Qt】快捷键
VOCALOID笔记
ELK + filebeat日志解析、日志入库优化 、logstash过滤器配置属性
Can I open a stock account with a compass? Is it safe?
Kinsing双平台挖矿家族病毒分析
Research on 3D model retrieval method based on two channel attention residual network - Zhou Jie - paper notes
数据可视化没有重点怎么办?
C reads XML on the web
CGLIB动态代理
OpenCV每日函数 结构分析和形状描述符(8) fitLine函数 拟合直线
VectorDraw Web Library 10.10
Misunderstanding of switching triode