【问题标题】:SpringBoot 2.7.5 - @Value annotation not assigning any values from application.properties fileSpringBoot 2.7.5 - @Value 注释不从 application.properties 文件分配任何值
【发布时间】:2022-12-15 09:26:08
【问题描述】:

我正在使用 Spring Boot 2.7.5 使用时@价值注入值形式的注解应用程序.properties文件,对下的变量进行空赋值@配置班级。

例子:

@Value("${file.name}")
private String fileName;

在这里我看到了对变量的赋值文件名理想情况下它应该赋值'${文件名}'如果密钥不匹配。但是空分配意味着项目中出现了一些问题(至少我是这么认为的,我需要这方面的专家 cmets)。

同样的事情在另一个项目中起作用,但在这个特定项目中却没有。

如果我的问题不够详尽,请告诉我,我会尝试详细解释

我的问题是,为什么它在其他项目中有效,但在这个项目中却无效。我需要检查哪些配置可能出错。已经通过多个 stackoverflow 解决方案并验证了以下所有内容:

  1. application.properties 文件拼写检查
  2. 在使用@Value 的类顶部的@Configuration 注释
  3. 所有键的键值对分配和拼写检查
  4. 库导入没有问题
  5. 尝试添加@PropertySource("类路径:foo.properties")
  6. 导入 org.springframework.beans.factory.annotation.Value;
  7. 资源文件夹被正确标记为'资源根'
  8. 临时替代

    private Properties props = new Properties();
    props.load(VaultCredential.class.getResourceAsStream("/application.properties"));
    props.getProperty("file.name");
    

【问题讨论】:

  • 您是否已确认您使用的是正确的 @Value 注释?
  • @Turing85 导入 o​​rg.springframework.beans.factory.annotation.Value;也添加到列表中的第 6 位
  • 你能提供一个minimal reproducible example吗?以 git 存储库的形式?
  • @Turing85 我可以,但遗憾的是,它在我试图复制它的其他示例项目中工作,但在我正在处理的项目中却没有,而且它无法共享。所以我正在寻找我需要研究的选项,比如项目配置或拼写检查或资源文件夹标记或我在这里肯定缺少的任何东西。
  • 使用--trace 运行程序以检查您的 application.properties 是否已加载。

标签: java spring spring-boot spring-mvc spring-annotations


【解决方案1】:

你能试试下面的代码吗

private String PathForImageGallery;

@Value("${file.name}")
public void PathForImageGallery(String PathForImageGallery) {
    this.PathForImageGallery = PathForImageGallery;
}

【讨论】:

  • 尝试了此解决方案,结果仍然相同。 Exception in thread "main" java.lang.NullPointerException at java.base/java.io.File.<init>(File.java:318)
【解决方案2】:

向大家道歉。我正在调用一个试图将 @Value 与属性绑定并在 @SpringBootApplicationmain() 方法中调用它的类。 完全错过了 main() 方法在 spring 应用程序启动并运行之前不会加载属性值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-28
    • 2020-05-08
    • 2019-01-06
    • 2012-09-26
    • 2019-12-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多