当前位置: 首页 > 面试题库 >

@Qualifier和@Resource之间的区别

汪晟睿
2023-03-14
问题内容

我看不到两种方式之间的任何区别,@ Qualifier 始终与 @Autowired一起使用

@Autowired
@Qualifier("alpha")

VS

@Resource(name="alpha")

有人能让我知道其中的区别吗?谢谢!


问题答案:

@Autowired可以单独使用。如果单独使用,将按类型进行接线。因此,如果在容器中声明了多个相同类型的bean,而@Autowired又不知道要注入哪个bean,就会出现问题。结果,通过指定Bean名称(按名称进行绑定),@Qualifier与一起使用@Autowired来阐明要实际连接的Bean

@Resource也按名称接线。因此,如果@Autowired与一起使用@Qualifier,则与相同@Resource

区别在于@Autowired@Qualifier是spring注释,@Resource而是标准java注释(来自JSR-250)。此外,@Resource
仅支持字段和setter注入,而 @Autowired支持字段,setter,构造函数和多参数方法注入。

建议@Resource用于田间和二传手注射。坚持使用@Qualifier@Autowired进行构造函数或多参数方法注入。

看到这个:

如果您打算通过名称表示注释驱动的注入,则不要主要使用@Autowired-
即使在技术上能够通过@Qualifier值引用bean名称。相反,最好使用JSR-250
@Resource批注,该批注的语义定义是通过其唯一名称来标识特定的目标组件,而声明的类型与匹配过程无关。



 类似资料:
  • 问题内容: 因此,如果我理解正确的话,两种方法都是在有多个候选对象的情况下确定要自动装配哪个bean的方法。那么到底有什么区别呢? 问题答案: 读取为“默认”。 如果一个Bean 没有 任何Bean ,并且存在多个该类型的Bean,则将选择标记的候选Bean ,即,当没有其他可用信息(即丢失)时,它是默认选择。 一个好的用例是,最初您只有一个类型的bean,因此没有使用任何代码。然后,当您添加另一

  • 问题内容: 谁能解释一下: 和 还有什么是容器管理的交易?如果要在事务中的表中插入三行,应该如何在会话外观中执行此操作。 问题答案: EJB是事务性组件。事务可以由应用服务器本身(CMT-容器管理的事务)管理,也可以由您自己在EJB中手动管理(BMT-Bean管理的事务)。 EJB通过JTA规范支持分布式事务。分布式事务是使用控制,其具有方法,,。 使用CMT,应用程序服务器会为您启动,提交和回滚

  • 问题内容: 我错放了太多次了,我想我一直忘记,因为我不知道两者之间的区别,只是一个给了我我期望的价值,而另一个却没有。 为什么是这样? 问题答案: 是的简写形式(尽管请注意,该表达式只会被计算一次。) 是的,即指定一元的到。 例子:

  • 问题内容: 因此,我有一段简单的代码可以打印出整数1-10: 然后,如果仅在第3行上更改一个运算符,它将打印出无限数量的1整数(我知道为什么会这样做)。为什么在运行第二个程序时没有出现语法错误?如果赋值运算符后面跟着一个加法运算符,它不会调用语法错误吗? 问题答案: 与相同, 只是意味着。

  • 问题内容: 有人可以解释一下 和 我不知道“确切”的含义 问题答案: 在这个例子中,什么都没有。当您具有多个具有相似名称的路径时,该参数将起作用: 例如,假设我们有一个显示用户列表的组件。我们还有一个用于创建用户的组件。的网址应嵌套在下。因此,我们的设置可能如下所示: 现在,这里的问题是,当我们转到路由器时,将通过所有定义的路由,并返回它找到的第一个匹配项。因此,在这种情况下,它将首先找到路线,然