首页 > 其他分享 >@Autowired和@Resource的区别

@Autowired和@Resource的区别

时间:2024-09-11 14:50:10浏览次数:1  
标签:Resource 区别 Autowired bean Bean 注入 属性

1--@Autowired

@AutowiredSpring里面提供的一个注解,它默认是根据类型来实现Bean的依赖注入;

@Autowired里面有一个required属性,默认值是true 表示强制要求bean实例的一个注入,在应用启动的时候,如果IOC容器中不存在对应类型的bean,那么启动就会报错;如果我们不希望实现依赖注入就可以把这个属性设置为false

其次如果Spring IOC容器中存在多个相同类型的bean实例,但是由于@Autowired是根据类型去进行注入的,所以Spring启动的时候就会提示一个错误,就是原本只能注入一个单实例Bean,但是现在Ioc容器存在多个,导致注入失败;针对这个问题,可以使用@Primary @Qualifier这两个注解来解决;

@Primary表示主要的Bean,当存在多个相同类型的Bean的时候,会优先使用声明了@Primary注解的一个Bean

@Qualifier 相当于条件筛选,可以根据Bean的名字可以去找到需要装配的目标Bean

2--@Resource

@Resource是JDK中提供的一个注解,只不过Spring在实现上提供了这个注解的一个功能支持,它的使用方式和@Autowired类似,

最大的区别就是@Resource可以支持ByName 和 ByType两种注入方式;

  • 如果使用name属性,spring会根据bean的名字来进行依赖注入;
  • 如果使用type属性,spring会根据bean的类型来进行依赖注入,如果两个属性都没有进行设置,@Resource默认是根据定义的属性名字去容器中进行匹配,如果没有匹配成功,再根据类型来匹配;
  • 如果两个都没有匹配到就会报错

3--注入方式

@Autowired 支持构造方法注入,属性注入,Setter方法注入

@Resource 只支持属性注入,Setter方法注入 不支持构造方法注入

标签:Resource,区别,Autowired,bean,Bean,注入,属性
From: https://www.cnblogs.com/shenhui323/p/18342538

相关文章

  • “Resource Forest” 模型通过将用户帐户和资源分开到不同的AD森林中,增强了安全性、管
    在ActiveDirectory(AD)域环境中,“ResourceForest”模型是一种架构设计用于优化和管理大型、复杂的网络环境。这种模型主要用于处理企业中不同的组织单位和资源的需求,确保安全性、灵活性和管理的简便性。ResourceForestModel的定义和特点定义:ResourceForest 模型是在AD......
  • gcc / g++ 编译的区别
    今天在群里聊天的时候突然发现自己叫不清楚gcc/g++这两个东西。于是学习并且进行总结分享一下。GCC:GNUCompilerCollectionGNU编译器集合。那么GNU又是什么呢?是一个操作系统!具体涉及到一些历史知识和开源运动,放入下面的链接里啦https://www.gnu.org/home.zh-cn.html所以......
  • 浅拷贝和深拷贝的区别是什么?如何代码实现深拷贝?
    浅拷贝(ShallowCopy):浅拷贝创建一个新对象,但是这个新对象的属性值是指向原始对象属性值的引用。对于对象属性是基本数据类型的,浅拷贝会复制其值。对于对象属性是对象(或数组)的,浅拷贝只复制引用,而不复制对象本身。深拷贝(DeepCopy):深拷贝创建一个新对象,并且递归地复制所有......
  • String Builder 与 StringBuffer 的区别 ----面试时遇到的一个问题
    简介:在Java中,StringBuilder和StringBuffer都是用于操作字符串的类,它们提供了类似于字符串的功能,但允许在运行时修改字符串的内容。这两个类的主要区别在于线程安全性。StringBuilderStringBuilder是一个非线程安全的类,它在Java5中引入。由于它没有线程安全的限......
  • useEffect和useLayoutEffect的区别
    它们两个的区别主要是执行时机的不一样,要理解执行时机。首先我们来了解下浏览器的执行流程,dom树和cssom树合并为render树之后,后面的流程概括来说就是layout布局,和paint(绘制,就把最后布局好的树画在屏幕视图上)。这里直接揭晓答案,useLayoutEffect是在layout之后,paint之前执行的。而u......
  • 固态硬盘和机械硬盘区别?固态硬盘和机械硬盘哪个好?
    在当今数据时代,硬盘作为电脑里的存储设备在我们的生活和工作中扮演着十分重要的角色。随着存储技术的进步,市场上出现了两种主流硬盘:固态硬盘和机械硬盘。它们各有优劣,那么二者究竟有什么区别?我们又该如何选择呢?本文将和大家聊一聊固态硬盘和机械硬盘的区别,大家在选择硬盘的时候可以......
  • 固态硬盘和机械硬盘区别?固态硬盘和机械硬盘哪个好?
    在当今数据时代,硬盘作为电脑里的存储设备在我们的生活和工作中扮演着十分重要的角色。随着存储技术的进步,市场上出现了两种主流硬盘:固态硬盘和机械硬盘。它们各有优劣,那么二者究竟有什么区别?我们又该如何选择呢?本文将和大家聊一聊固态硬盘和机械硬盘的区别,大家在选择硬盘的时候可以......
  • [Vue] 高阶组件和套一层父组件的区别
    前言App.vue的套一层布局组件MainLayout,MainLayout做一些统一的布局之外,再做一些子路由相同的逻辑,比如子路由需要权限访问。但是不灵活,如果一堆路由组件中有一个不需要这个功能,就不能通过父组件嵌套统一逻辑。高阶组件比起套一层父组件复用逻辑更灵活一些。高阶组件高阶组......
  • Linux中PATH、 LIBRARY_PATH、 LD_LIBRARY_PATH的区别
    Linux中PATH、LIBRARY_PATH、LD_LIBRARY_PATH的区别_pathlibrary-CSDN博客这里写目录标题1.PATH2.LIBRARY_PATH3.LD_LIBRARY_PATH1.PATHPATH是可执行文件路径命令行中的命令,如ls等等,都是系统通过PATH找到了这个命令执行文件的所在位置,再run这个命令(可执行文件)。所以,PATH......
  • “Interface 和 Type 区别”深度解析
    “Interface和Type区别”深度解析文章目录一、Interface和Type是什么二、如何使用Interface和Type1.定义Interface2.定义Type3.使用Interface和Type4.区别与联系三、Interface和Type二者有哪些区别,分别在哪些场景使用1.区别2.场景......