是否可以在某个类的静态块中获取spring活动概要文件的值?
我试过了 @value("$(spring.profiles.active)")
以及 @Autowired Environment env;
获取值,但在静态块中两者都作为null。
我知道在bean加载期间,静态块是在spring初始化之前执行的,所以是否有任何解决方法可以从静态块中的application.yml获取活动概要文件值或任何值?
示例代码:
@Value("$(spring.profiles.active)")
private String env;
static {
URL url = null;
WebServiceException e = null;
try {
ClassPathResource wsdlLoc = new ClassPathResource("/wsdl/Transaction_"+env+".wsdl");
url = new URL(wsdlLoc.getURL().toString());
} catch (IOException ex) {
e = new WebServiceException(ex);
}
TRANSACTIONPROCESSOR_WSDL_LOCATION = url;
TRANSACTIONPROCESSOR_EXCEPTION = e;
}
2条答案
按热度按时间gj3fmq9x1#
请在静态中使用下面的工具来获取env变量
如何使用
uqjltbpv2#
恐怕这是不可能的,不应该使用。。
混合静态上下文和依赖注入框架的上下文是一种反模式。
这取决于您希望将env注入到哪里,不会有太大的区别,因为spring将把您的组件/服务作为注入上下文上的一个单例来处理。
总结:不要在spring应用程序中使用大量静态上下文