Java Spring Boot 配置和组件

标签 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;
}

}

最佳答案

在你的构造函数中,application 变量还没有被初始化,换句话说,Spring 首先需要一个实例,这样它才能应用它的魔力。您需要将构造函数逻辑移至用 @PostContruct 注解的方法,以便使用此时的属性值设置应用程序变量。

关于Java Spring Boot 配置和组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42613887/

相关文章:

java - 如何实现ListIterator?

java - 如果 Java 已经有一个 DateFormat 类,为什么 Android 有自己的 DateFormat 类?

java - Mockito:调用层次结构中的模拟对象 - 链式调用

spring-boot - 用gradle进行加特林特:尽管执行了操作,任务仍未声明任何输出

java - java中的ArrayList和方法

java - Spring @PostConstruct 依赖于@Profile

java - spring security中的多个登录表单

javascript - 为什么 Cesium 查看器在我添加时不显示模型?

spring-security - 如何使用 OAuth2 通过 Spring 获取自定义 Principal 对象?

java - 从 Java 异步调用 .NET Web 服务