spring PropertySourcesPlaceholderConfigurer无法解析属性

j2cgzkjk  于 2023-02-11  发布在  Spring
关注(0)|答案(1)|浏览(159)

我正在阅读文档www.example.comhttps://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 { }

以及以下www.example.com文件:application.properties file:

catalog.name=MovieCatalog

Spring提供了一个默认的宽松嵌入值解析器。它将尝试解析属性值,如果无法解析,则属性名称(例如${catalog.name})将作为值注入。
无法解析是什么意思?如果我在www.example.com没有这个属性,就会报错:application.properties, it gives me error:

Could not resolve placeholder 'catalog.name' in value "${catalog.name}"
    • 更新日期**:

我想明白了,在Spring内核中,如果找不到属性,它会使用${catalog.name}
但在SpringBoot中,如果找不到属性,则会给出错误。

rm5edbpk

rm5edbpk1#

解决意味着发现。有时解决(发现)可能很复杂。
应用程序属性中的SpringBoot每个属性也可以注入一个环境变量,因此catalog.name可以从www.example.com中删除apllication.properties,并用作环境变量CATALOG_NAME。
AFAIK值也可以在命令行中输入。

相关问题