【问题标题】:PropertySourcesPlaceholderConfigurer can't resolve propertyPropertySourcesPlaceholderConfigurer 无法解析属性
【发布时间】:2023-02-07 06:26:23
【问题描述】:

我在这里阅读文档 https://docs.spring.io/spring-framework/docs/current/reference/html/core.html#beans-value-annotations

@Component
public class MovieRecommender {

    private final String catalog;

    public MovieRecommender(@Value("${catalog.name}") String catalog) {
        this.catalog = catalog;
    }
}

@Configuration
@PropertySource("classpath:application.properties")
public class AppConfig { }

以及以下 application.properties 文件:

catalog.name=MovieCatalog

Spring 提供了一个默认的宽松嵌入值解析器。它 将尝试解析属性值,如果无法解析, 属性名称(例如 ${catalog.name})将被注入为 价值。

“无法解决”是什么意思?如果我在 application.properties 中没有这个属性,它会给我错误:

Could not resolve placeholder 'catalog.name' in value "${catalog.name}"

更新:

我想到了。在 Spring 核心中,如果找不到属性,则使用 ${catalog.name}

但是在 SpringBoot 中,如果找不到属性,则会报错。

【问题讨论】:

    标签: spring


    【解决方案1】:

    解决意味着找到。有时解决(发现)可能很复杂。

    一个SpringBoot应用程序属性中的每个属性也可以注入一个环境变量。因此 catalog.name 可以从 apllication.properties 中删除并用作环境变量 CATALOG_NAME。

    AFAIK 值也可以出现在命令行中。

    【讨论】:

      猜你喜欢
      • 2021-02-12
      • 1970-01-01
      • 1970-01-01
      • 2013-07-25
      • 2014-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多