之前学习的注入对象的用的是@Resource ,为什么现在又成了@Autowired
@Resource 和 @Autowired 的作用是一样的吗,可以互相替换吗?
9
收起
正在回答
1回答
同学你好,两者是有些不同的:
1.来源不同:@Autowired来自Spring框架,而@Resource来自于(Java)JSR-250;
2.依赖查找的顺序不同: @Autowired先根据类型再根据名称查询,而@Resource先根据名称再根据类型查询:
3.支持的参数不同: @Autowired只支持设置1个参数,而 @Resource支持设置7个参数;
4.依赖注入的用法支持不同: @Autowired既支持构造方法注入,又支持属性注入和Setter 注入,而@Resource 只支持属性注入和Setter注入;
5.编译器IDEA的提示不同: 当注入Mapper对象时,使用@Autowired注解编译器会提示错误,而使用@Resource 注解则不会提示错误。
在实际使用的时候,更多的会关注第二点的不同,即查找顺序。如果命名时比较规范,则使用@Resource会更好,如果命名与类型无关,则建议使用@Autowired。
祝学习愉快~
Java工程师 2024版
- 参与学习 2020 人
- 提交作业 1249 份
- 解答问题 1202 个
2024重磅革新,超百小时内容豪华升级,加速提升高级技能与高薪就业竞争力 课程紧贴企业最新人才需求,历经7年持续迭代,帮助万名学子入行转行 从零起点到高阶实战,学习路径稳健顺滑,成就从小白到工程师高薪
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星