在spring-boot类构造函数中调用first或bootstrap.yml?

问题描述 投票:1回答:1

我有一个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的构造函数外部正在打印值。

java spring-boot
1个回答
2
投票

有意义的是,在Spring处理之前调用构造函数,该函数使用Spring属性对字段进行值。 从逻辑的角度来看,必须在Spring值实例字段之前调用构造函数。

或者,您可以在使用javax.annotation.@PostConstruct注释的方法中移动使用Spring值的字段的处理。

从规格:

PostConstruct注释用于在完成依赖项注入以执行任何初始化之后需要执行的方法。

@PostConstruct
public void postProcess(){
   config = ServiceBusConfiguration.configureWithSASAuthentication(nameSpace, sasPolicyKeyName, sasPolicyKey,
                serviceBusRootURI);
}
© www.soinside.com 2019 - 2024. All rights reserved.