当前位置: 首页 > 知识库问答 >
问题:

HK2球衣。如何从容器中获取bean?

宰父子安
2023-03-14

我有一系列功能。我想在配置特征绑定一些豆子,然后将它们放在MongoDB特征中。我应该使用什么方法?

public final class IoCBinder extends AbstractBinder {

    @Override
    protected void configure() {
        ConfigFeature.configureIoC(this);
        MongoDBFeature.configureIoC(this);

    }
}

在这里放一些豆子:

public class ConfigFeature {
    public static void configureIoC(AbstractBinder binder) {
        // ....
        binder.bind(configProvider).to(ConfigurationProvider.class).in(Singleton.class).named("configProvider");
    }
}

我想在这里获取confiProviderbean:

public class MongoDBFeature {
    public static void configureIoC(AbstractBinder binder) {
        // ?? get configProvider here ??
    }
}

共有1个答案

沈华晖
2023-03-14

您可以将 Bean 绑定到服务定位器,如下面的示例所示。

服务

public class TestService{

}

粘结 剂

public static TestBinder extends AbstractBinder{
     @Override
     protected void configure() {
         bind(new TestService()).to(TestService.class);
     }
}

特点一

public class Feature1 implements Feature{

    @Inject
    private ServiceLocator locator;

    @Override
    public boolean configure(FeatureContext context) {
        org.glassfish.hk2.utilities.ServiceLocatorUtilities.bind(locator,new TestBinder());
        return true;
    }

}

请注意,服务定位器实例将注入到功能 1,并且绑定程序将绑定到此定位器实例。

特点 2

public class Feature2 implements Feature{

    @Inject
    private TestService testService;

    @Override
    public boolean configure(FeatureContext context) {
        return true;
    }

}

应用程序/ResourceConfig类

public class TestConfig extends ResourceConfig {
    register(Feature1.class);

    // Need to make sure Feature1 is registered before Feature2. 
    // Another option is to register Feature2 in configure() method of Feature1 class.
    register(Feature2.class);
}
 类似资料:
  • 问题内容: 我正在尝试按照此处的示例创建工厂以注入HttpSession。不幸的是,无论我尝试什么,都无法正常工作。不知道可能是什么问题。 我试过只注入HttpServletRequest和提供程序。这是我使用提供程序的示例。尝试在provide方法中访问提供程序时,该错误是空指针异常。如果我尝试注入HttpServletRequest,那么将无法获取任何对象。我正在使用JerseyTest在Gr

  • 问题内容: 我目前正在尝试使用Jersey 创建一个,但无法让Jersey接它。 除了在实现中使用批注之外,我找不到任何实际用法示例,甚至找不到如何使用它。看似写在泽西岛上的人在某些帖子中暗示这足以使它被拾起。 我需要指定一些SPI服务文件,还是将其添加到某个工厂的某个地方? 注意:我正在Glassfish 3.1中运行,并使用Spring 3.1。Spring可能会以某种方式接管s 的自动加载似

  • 问题内容: 我想了解它们的配置,就像通过元数据获取有关EC2实例的信息一样。 我可以使用(假设正在侦听port ) 来获取它的一些数据,但是想知道是否有更好的方法,至少获取容器的完整ID,因为实际上缩短到了12个字符,而docker似乎对其执行了“最佳匹配”。 另外,如何获取docker主机的外部IP(除了访问EC2元数据(特定于AWS)之外) 问题答案: 我发现可以在/ proc / self

  • 由于Docker从引擎版本20.10开始支持cgroup v2,因此它将自动在启用了cgroups v2的发行版上使用它。从容器中获取唯一容器ID的已知解决方案不再有效。 尝试与docker v20.10.8在Debian 11与阿尔卑斯山:最新。 cgroup v1的工作解决方案:如何从容器本身中获取DockerLinux容器信息? 正如docker参考中所述,对于cgroup v2,容器id在

  • 问题内容: 我正在尝试使用Jersey从Web资源下载SWF文件。 我已经编写了以下代码,但是无法正确保存文件: 它是保存的假设,响应不会返回一个SWF文件,作为回报。 但是,当我尝试打开SWF时,什么也没有发生(也没有错误),这表明我的文件不是根据响应创建的。 问题答案: 从Java 7开始,您还可以使用新的NIO API将输入流写入文件:

  • 如何使用PHPDI加载数据库容器?这是我迄今为止尝试过的变体之一。 Settings.php init.php 系统用户详细信息。php 函数MyApp\Models\SystemUser\SystemUserDetails:的参数太少::\uu construct(),0传入/www/MyApp/Models/SystemUser。php位于第54行,正好是一个预期文件:/www/myapp/m