我有一个配置.java单例类(文件加载了许多属性),我想在应用程序中的某些类中注入它。
因此,我使用 AbstractBinder 绑定了 ResourceConfig 类中的注入。
现在,我需要在此资源配置中使用此配置类。
例如,在我的配置类中有一个名为"packages"的属性,我必须在 ResourceConfig 类中使用它才能注册包。
问题是注入不是在 ResourceConfig 类中开始的。
class Configuration {
//many properties
String packages = "";
}
class MyResourceConfig extends ResourceConfig {
@Inject
Configuration configuration;
MyResourceConfig() {
...
register(MyBinder.class); //with many injection
...
packages(configuration.packages);
}
}
那么,您能否建议我如何拥有此生命周期?(也许我必须使用另一个球衣类?
我意识到这是一种解决方法,但您可以通过对 CDI 单例对象的静态访问来实现它。
像这样:
@ApplicationPath("/rest")
public class RestApplication extends ResourceConfig {
public RestApplication() {
super();
super.packages(true, "com.package.name");
register(JacksonFeature.class);
register(JacksonObjectMapperProvider.class);
ModelConverters.getInstance().addConverter(
new CustomObjectMapperModelResolver(getObjectMapperProvider()));
// get the instance here ^
OpenApiResource openApiResource = new OpenApiResource();
register(openApiResource);
AcceptHeaderOpenApiResource ahoar = new AcceptHeaderOpenApiResource();
register(ahoar);
}
private static JacksonObjectMapperProvider getObjectMapperProvider() {
return CDI.current().select(JacksonObjectMapperProvider.class).get();
}
}