我有一个spring-boot应用程序。我想从bootstrap.yml
中选择一些值到类的构造函数中。下面是代码片段。
public class MapicsSCFFGeneratorServiceImpl implements MapicsSCFFGeneratorService {
@Value("${azuresb.nameSpace}")
private String nameSpace;
@Value("${azuresb.sasPolicyKeyName}")
private String sasPolicyKeyName;
@Value("${azuresb.sasPolicyKey}")
private String sasPolicyKey;
@Value("${azuresb.serviceBusRootURI}")
private String serviceBusRootURI;
@Value("${azuresb.queueName}")
private String queueName;
public MapicsSCFFGeneratorServiceImpl() {
config = ServiceBusConfiguration.configureWithSASAuthentication(nameSpace, sasPolicyKeyName, sasPolicyKey,
serviceBusRootURI);
}
}
我的问题是哪一个首先调用bootstrap.yml或构造函数
因为如果我在构造函数中打印这个值,另一方面我在得到Null的构造函数外部正在打印值。
有意义的是,在Spring处理之前调用构造函数,该函数使用Spring属性对字段进行值。 从逻辑的角度来看,必须在Spring值实例字段之前调用构造函数。
或者,您可以在使用javax.annotation.@PostConstruct
注释的方法中移动使用Spring值的字段的处理。
从规格:
PostConstruct
注释用于在完成依赖项注入以执行任何初始化之后需要执行的方法。
@PostConstruct
public void postProcess(){
config = ServiceBusConfiguration.configureWithSASAuthentication(nameSpace, sasPolicyKeyName, sasPolicyKey,
serviceBusRootURI);
}