当前位置:网站首页>@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
边栏推荐
- Home environment monitoring system design (PC version) (mobile app version to be determined)
- Static bit rate (CBR) and dynamic bit rate (VBR)
- (tool class) quickly add time to code in source insight
- OpenCV每日函数 结构分析和形状描述符(8) fitLine函数 拟合直线
- 【批处理DOS-CMD命令-汇总和小结】-文件与目录操作命令(md、rd、xcopy、dir、cd、set、move、copy、del、type、sort)
- OpenMP入门
- realsense d455 semantic_slam实现语义八叉树建图
- Cglib dynamic proxy
- China Mobile MCU product information
- Chuantu microelectronics ca-if1051 can-fd transceiver
猜你喜欢
Unity3D邪门实现之GUI下拉菜单Dropdown设计无重复项
VectorDraw Web Library 10.10
[batch dos-cmd command - summary and summary] - application startup and call, service and process operation commands (start, call, and)
Sichuan Tuwei ca-if1051 can transceiver has passed aec-q100 grade 1 certification
Sichuan earth microelectronics high performance, high integration and low cost isolated 485 transceiver
STL教程4-输入输出流和对象序列化
Tupu software digital twin 3D wind farm, offshore wind power of smart wind power
数据可视化没有重点怎么办?
“空间转换”显著提升陡崖点云的地面点提取质量
(tool class) use SecureCRT as the communication medium
随机推荐
海思3559 sample解析:vio
Pit encountered by pytorch: why can't l1loss decrease during model training?
[distillation] pointdistiller: structured knowledge distillationwards efficient and compact 3D detection
Access to foreign lead domain name mailbox
Misunderstanding of switching triode
Tupu software digital twin 3D wind farm, offshore wind power of smart wind power
栅格地图(occupancy grid map)构建
Runtime——methods成员变量,cache成员变量
shell小技巧(一百三十四)简单的键盘输入记录器
Accès à la boîte aux lettres du nom de domaine Lead à l'étranger
国外LEAD域名邮箱获取途径
【QT】Qt 5 的程序:打印文档
【批处理DOS-CMD命令-汇总和小结】-文件与目录操作命令(md、rd、xcopy、dir、cd、set、move、copy、del、type、sort)
[single chip microcomputer project training] multipoint temperature wireless acquisition system based on nRF905
[Batch dos - cmd Command - Summary and Summary] - cmd extension Command, extension Function (CMD / E: on, CMD / E: off)
基于地面点稀少的LiDAR点云的茂密森林蓄积量估算
NSIS silent installation vs2013 runtime
Understand the reasons for impedance matching of PCB circuit board 2021-10-07
realsense d455 semantic_slam实现语义八叉树建图
C get the version number of exe - file version and assembly version