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

CDI实例或指导提供者的Spring等效项是什么

西门旻
2023-03-14
问题内容

在CDI中,您可以使用以下方法定义一个对象,该对象将为您提供某种类型的物品:

@注入
Instance <MyObject> myObjectInstance;
// ...
MyObject myObjectInstance.get();

同样,在Guice中,您可以执行以下操作:

@注入
Provider <MyObject> myObjectInstance;
// ...
MyObject myObjectInstance.get();

我想知道Spring中是否有类似的构造,或者您必须使用ApplicationContext来获取参考?


问题答案:

因此,经过大量挖掘,我发现Spring支持JSR-330。这个JSR定义了一个简单的API(整个规范实际上就是这个API),它标准化了几个依赖项注入接口,注释和行为。

与Spring不同,FactoryBeanjavax.inject.Provider接口在获取bean引用时不会引发Exception。此外,您仍然需要在某个位置定义此FactoryBean(读取XML或@Configuration类,这不是最佳选择)。

由于存在错误,在当前的Spring 3.1.1中,javax.inject.Provider 不起作用 。它 不会工作 在Spring 3.1.0。

为了使用它,您只需包含javax.inject jar-如果使用maven,您可以:

    <dependency>
        <groupId>javax.inject</groupId>
        <artifactId>javax.inject</artifactId>
        <version>1</version>
    </dependency>

Spring将检测到它,从那一刻起,您可以:

@Inject
Provider<MyObject> myObjectInstance;
//...
MyObject myObjectInstance.get();

就像在Guice示例中一样,因为它是相同的API。

尽管我之前曾对Konstantin发表评论,但Spring 确实 是自己 创建 了Provider。(我正在针对Spring
3.1.1进行测试,并遇到了该Spring
Provider回归问题



 类似资料:
  • 问题内容: 在使用CDI时,我可以使用注释创建一个生产者方法,以调用该方法来选择由注释注入实现接口的bean 。 现在,我正在使用Spring,但没有找到任何类似的东西。使用批注时,我需要使用什么来获得与CDI中批注相同的结果? 问题答案: 您正在寻找: @Bean是方法级别的注释,是XML 元素的直接类似物。批注支持所提供的大多数属性,例如:初始化方法,销毁方法,自动装配,延迟初始化,依赖项检查

  • 本文向大家介绍服务提供者能实现失效踢出是什么原理?相关面试题,主要包含被问及服务提供者能实现失效踢出是什么原理?时的应答技巧和注意事项,需要的朋友参考一下 服务失效踢出基于 Zookeeper 的临时节点原理。

  • 问题内容: LINQ的Java等效项是什么? 问题答案: 现在使用Java 8向我们介绍了Stream API,这在处理集合时是类似的事情,但与Linq不太一样。 如果它是您正在寻找的ORM,例如Entity Framework,那么您可以尝试Hibernate

  • 问题内容: 有Swift的等效项吗?在中,我们通常使用: 如何在Swift中实现相同目标?我发现了一个功能: 但是,它很长,根本不方便。 问题答案: 将在斯威夫特的世界同样存在。 的,和参数均标有 该装置的同时调用该函数我们可以忽略这些参数的关键字。在这种情况下,将使用其默认值。 这得出一个结论,该方法调用可以简化为: Swift 5- 没什么变化,仍然可以这样工作。

  • 问题内容: 在Objective-C中,我使用以下代码删除所有子视图: 但是如何迅速使用它呢?我看到苹果文档迅速使用了该方法 但是当我尝试它时,出现错误: 有什么方法可以快速删除子视图? 问题答案: 已针对Swift 2.0(Xcode 7)更新 用途: 或像这样:

  • 问题内容: 在TSQL中,我可以声明: 在MySQL中,我无法编写相同的查询。 在MySQL中编写此查询的正确方法是什么? 问题答案: 行尾的分号。