如何在jersey 2.0中使用hk2注入常量?

agn*_*nul 8 java dependency-injection jersey-2.0 hk2

如何在球衣中使用HK2将常量注入某个类?有了Guice,我可以有类似的课程

public class DependsOnFoo {

    @Inject
    public DependsOnFoo(@Named("FOO") String foo) {
        ...
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

我会在注入器中配置类似的东西

bind(String.class).named("FOO").toInstance(new String("foo"))
Run Code Online (Sandbox Code Playgroud)

HK2中的等价物(如果有的话)是多少?

Chr*_*haw 18

我正在学习来自Guice的hk2.老实说,我仍然处于杂草中,因为hk2的复杂性与guice的简单性有关.我确实发现这个解决方案适用于我,它与Guice构建器非常相似.这似乎比使用ServiceLocatorUtilities课程更直接.

public class IOCMockRestModule extends AbstractBinder
    bind(20000).to(Integer.class).named("MAX_REQUEST_TIMEOUT");
}
Run Code Online (Sandbox Code Playgroud)

并使用注入的值:

@Inject
protected CustomerResource(ICustomerProvider customerProvider, @Named("MAX_REQUEST_TIMEOUT") int maxTimeoutMillis) {
Run Code Online (Sandbox Code Playgroud)

  • 是否可以以更灵活的方式实现这一点,而不需要为每个新命名的值(例如“MAX_REQUEST_TIMEOUT”)添加一个新的“bind()”?我希望可以在运行时读取命名值并通过自定义实现(例如从属性文件、环境变量等)中读取更灵活的东西? (2认同)