【问题标题】:What is the recommended way to load an external configuration file in Wildfly (Swarm)?在 Wildfly (Swarm) 中加载外部配置文件的推荐方法是什么?
【发布时间】:2018-01-05 23:02:10
【问题描述】:
我希望能够在启动 Wildfly Swarm 应用程序时指定一个外部配置文件。推荐的方法是什么?
我已经看到像 @ConfigValue 和 @Configured 这样的注释被提及,但我还没有让它们起作用,而且大多数提到它们的地方都是关于开发分数的文档。我还能使用它们吗?似乎很难找到有关它们的任何文档。
我是否可以访问 Wildfly Swarm 应用程序启动时提供的参数?在这种情况下,我可以将配置文件的路径指定为参数,然后自己解析文件。
【问题讨论】:
标签:
configuration
yaml
wildfly
external
wildfly-swarm
【解决方案1】:
感谢 Ken 证实使用 @ConfigurationValue 是一个可行的解决方案,我现在找到了我的问题的答案。
一开始我尝试使用这个注解但是没有用。我意识到我错误地使用了 CDI 而不是 Wildfly Swarm。我之前的代码如下所示:
@Default
@ApplicationScoped
public class ConfigurationHandlerImpl implements ConfigurationHandler {
@Inject @ConfigurationValue("wishlist.test")
private String test;
@Inject
public ConfigurationHandlerImpl(Logger logger) { ... }
}
问题在于,当变量 logger 获得值时,test 变量保持 null。似乎我不能有两个像这样的 @Inject 。解决方案是将 test 变量添加到构造函数中。然后 logger 和 test 都被正确分配了一个值,如下所示。
@Default
@ApplicationScoped
public class ConfigurationHandlerImpl implements ConfigurationHandler {
@Inject
public ConfigurationHandlerImpl(Logger logger, @ConfigurationValue("test.test") String test) { ... }
}