在 Spring Boot 应用程序中未从 application.properties 获取值

Not getting values from application.properties in SpringBoot application

我使用“http://start.spring.io”Spring Initializr 创建了一个简单的 Spring 启动应用程序。我正在使用 JDK 8 和 Spring 2.6.6.

我在 IntelliJ 中打开了一个应用程序并且能够构建它并 运行 它。我还添加了“application.properties”作为我定义 属性 :

的资源
application.baseurl=/responsiblityViewer/api

在我的 DemoApplication.java 中:

public class DemoApplication {

    @Value("${application.baseurl}")
    public static String baseUrl;

    public static void main(String[] args) {

        SpringApplication.run(DemoApplication.class, args);
        System.out.println("Test Application baseUrl : " + baseUrl);        
    }
}

输出为 NULL。

我还尝试在我定义的地方使用“application.yml”:

application:
  baseurl: /responsiblityViewer/api

并且仍然没有注入“application.baseurl”。我在这里做错了什么?

这里有很多东西要剖析。

首先,您不能将值注入静态 属性。

其次,您将无法从静态 main 方法中引用 属性,因为尚未构建该 bean。

如果您阅读 spring bean 生命周期,它将帮助您理解这一点,注入发生在实例化之后。

如果将变量定义更改为

,您可以观察到此行为
public String baseUrl;

并添加此方法

@PostConstruct
public void printIt() {
  log.debug(baseUrl);
}