Java Spring Boot配置&组件

时间:2017-03-05 20:56:30

标签: java spring spring-boot configuration

我试图使用组件来加载我的配置yml文件。

然而,它抛出一个空指针异常,System.out显示' null'申请。

但是,当使用相同的模式编写@RestController时,一切正常。为什么@component没有看到我的配置?

@Component
@ConfigurationProperties(prefix = "myconf")
public class AppConfigJSON {

    private String application;
    private final String applicationConfigJSON;
    Logger logger = LoggerFactory.getLogger(this.getClass());

    private final ReadContext acRcJson;

public AppConfigJSON(){
        String json = "";
        try {
            System.out.println("Application: " + this.application);
            json = IOUtils.toString(this.getClass().getResourceAsStream("/myconfs/"+this.application+".json"));
        } catch (IOException e) {
            logger.error("Error reading JSON or app YML {}", e.getStackTrace());            
        }
        this.applicationConfigJSON = json;
        this.acRcJson = JsonPath.parse(this.getApplicationConfigJSON());
    }


// These functions below set by configuration
public String getApplication()
{
    return application;
}

public void setApplication(String application)
{
    this.application = application;
}

}

1 个答案:

答案 0 :(得分:2)

在你的构造函数中,应用程序变量还没有被初始化,换句话说,Spring首先需要一个实例,所以它可以应用它的魔力。您需要将构造函数逻辑移动到使用@PostContruct注释的方法,以便在该点使用属性值设置应用程序变量。