未从应用程序获取值.属性在SpringBoot应用程序中



我创建了一个简单的SpringBoot应用程序,使用"http://start.spring.io"春天Initializr。我使用的是JDK 8和Spring 2.6.6。

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

application.baseurl=/responsiblityViewer/api

in my 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"不是注射。我哪里做错了?

这里有很多要剖析的。

首先,你不能将值注入到静态属性中。

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

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

如果您将变量定义更改为

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

并添加这个方法

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

相关内容

  • 没有找到相关文章

最新更新