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

@Inject和@Resource以及@Autowired注释有什么区别?

柴瀚
2023-03-14
问题内容

@Inject和@Resource以及@Autowired注释有什么区别?
我们什么时候应该使用它们?


问题答案:

和注释@Inject和有什么区别?@Resource@Autowired

我们什么时候应该使用它们?@Inject与@Autowire与@Resource之间的区别?

@Autowired:spring专有注释(与@Inject和@Resource相反),按类型(即,通过带注释的字段或承包商的接口的类)注入资源。如果接口或子类的实现很少,我们可以使用@Qualifier注释来缩小选择范围,以免产生歧义。对于后备匹配,bean名称被视为默认的限定符值。尽管你可以使用此约定按名称引用特定的bean,但@Autowired基本上是关于带有可选语义限定符的类型驱动的注入。

@注入:基于JSR-330(Java依赖注入)的注释标识可注入的构造函数,方法和字段。该注释几乎完全替代了Spring的@Autowired注释。因此,你可以选择使用@Inject,而不是使用特定于Spring的@Autowired注释。@Autowired和@Inject之间的区别之一是@Inject没有必填字段,因此如果我们未能找到合适的对象来注入它,则@Autowired可以使用required = false并允许空字段(仅如果需要!)。@Inject批注的优点是你可以要求@Inject注入提供程序,而不是直接注入引用。Provider接口除了其他功能外,还可以延迟注入bean引用和注入bean的多个实例。如果接口或子类的实现很少,我们可以使用@Named注释缩小选择范围,以免产生歧义。@Named注释的工作原理与Spring的@Qualifier相似

@Resource:基于JSR-250的注释。@Resource与@Autowired和@Inject非常相似,但是主要区别是执行路径可用于查找需要注入的bean。@Resource将首先按名称缩小搜索范围,然后按类型缩小搜索范围,最后按限定符缩小搜索范围(如果按名称找到匹配项则忽略)。@Autowired和@Inject将首先按类型,然后按限定符,最后按名称缩小搜索范围。



 类似资料:
  • 在一个android、kotlin项目中,看到这个< code>@set:Inject,但找不到一个好的解释。有人知道吗?

  • 本文向大家介绍@Inject和@Autowired之间的区别,包括了@Inject和@Autowired之间的区别的使用技巧和注意事项,需要的朋友参考一下 @Inject和@Autowired这两个注释都用于在应用程序中自动装配。 @Inject批注是Java 6中引入的Java CDI的一部分,而@Autowire批注是spring框架的一部分。因此,两个注释都实现相同的目的,我们可以在应用程序

  • 也许给出问题的最好方法是在下面显示代码:

  • 问题内容: 我正在SpringSource上浏览一些博客,在其中一个博客中,作者正在使用,我想他也可以使用。 这是一段代码: 我不知道之间的区别和,如果有人解释他们的区别将不胜感激,什么情况下要使用哪一个? 问题答案: 假设这里是指注释。是Java EE 6(JSR-299)中引入的Java CDI(上下文和依赖项注入)标准的一部分,更多内容。Spring选择支持与自己的注释同义使用。 因此,为了

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

  • 问题内容: 方法和注释之间有什么区别?他们是一样的吗? 例如,这是: 与: 问题答案: 它们都达到相同的结果。通常不会使用注解(),因为您不会用看起来都一样的样板分配来填充代码。 请注意,为了使用注释,您的测试类应在其方法中进行注释或包含对的调用。