这个问题是关于以可移植方式读取 REST 服务中的配置的正确方法,例如应该在Thorntail 2.4.0和Wildfly 15上运行。
这是 Thorntail 建议的原始实现
@Inject
@org.wildfly.swarm.spi.runtime.annotations.ConfigurationValue("swarm.port.offset")
private Optional<String> portOffset;
这在 WildFly 15 中不起作用,因此我们通过以下方式更改了此代码:
@Inject
@ConfigProperty(name="swarm.port.offset")
private Optional<String> portOffset;
并且只要设置了系统属性,它就可以很好地工作。
但是,回到 Thorntail,它会生成以下异常:
org.jboss.weld.exceptions.DeploymentException: WELD-001408: 类型 Optional 的不满足依赖项,
在注入点带有限定符 @ConfigProperty [BackedAnnotatedField] @Inject @ConfigProperty private com.my-company.core.internal.util.ZookeeperRegistry.portOffset
在com.my-company.core.internal.util.ZookeeperRegistry.portOffset(ZookeeperRegistry.java:0) WELD-001475:以下 bean 按类型匹配,但没有匹配的限定符:-生产者方法 [可选] 带限定符 [@Any @ConfigurationValue] 声明为 [[UnbackedAnnotatedMethod] @ConfigurationValue @Dependent @Produces org.wildfly.swarm.container.runtime.cdi.ConfigurationValueProducer.produceOptionalConfigValue(InjectionPoint)]
提前谢谢了。