在 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);
}
我使用“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);
}