spring-boot - Spring Boot 环境属性返回 null
问题描述
我有一个 Spring Boot 2 应用程序。我正在尝试通过 spring Environment 以及 @Value 属性访问我的应用程序属性文件属性,它们都不起作用。
@Autowired
Environment env;
logger.info(env.getProperty("app.environment"));
@Value("${app.environment}")
private String _env;
logger.info(_env);
app.environment=本地
看起来 spring boot 根本没有检测到 application.properties 文件。
我在这里做错了什么,在此先感谢
解决方案
如果注入的属性为 null,则很可能意味着您的 bean 尚未创建。Spring boot 仅在创建 bean 后才将值注入 bean 属性。
这是一个简单的实验来演示这种行为:
@Value("${spring.application.name}")
private String instanceApplicationName;
public UserController(@Value("${spring.application.name}") String appNameInConstructor) {
System.out.println("Constructor app name: " + appNameInConstructor);
System.out.println("Instance application name: " + this.instanceApplicationName);
}
哪个属性将为空?instanceApplicationName 还是 appNameInConstructor?
是的,它是null的instanceApplicationName属性,因为首先调用构造函数并且尚未初始化实例属性。appNameInConstructor正确记录应用程序名称。
因此,您在哪里引用注入的属性以及如何注入它们,两者都很重要。
你可以在这里查看整个项目:https ://github.com/nkumashi/springboot-webmvc-demo 。
推荐阅读
- python - 通过使用 VBA 代码调用 Python 代码来运行它
- angular - 为什么将 DatePipe 添加到 Injectable Service 构造函数失败?
- python - 如何用单行拆分大文件?
- java - 如何将多个弹性搜索连接添加到 Spring Boot 项目?
- r - 调整R中不同文件夹中的图像大小
- r - 迭代数据帧并在 R 中生成向量
- arrays - Powershell Where-Object in (Array)
- asp.net - 为什么 ASP.NET Webform 无法识别 jQuery 代码(CS1056:意外字符“$”)
- json - 在 GCP Ai 平台上进行预测
- java - 当我链接到登录 microsoft online com 时出现 AADSTS90023: Invalid STS request