如何在 bootstrap.properties 中定义时访问“spring.application.name”?

我有以下弹簧启动1.4.2.发布示例应用程序

@SpringBootApplication
public class Application {

    @Value("${spring.application.name}")
    private String applicationName;

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

我在bootstrap.properties中定义了以下配置:

spring.application.name=sample-app

运行它时,我收到以下错误:

java.lang.IllegalArgumentException: Could not resolve placeholder 'spring.application.name' in string value "${spring.application.name}"

关于为什么它不能注入“spring.application.name”的任何提示?需要在那里定义它以支持其他弹簧启动云。


答案 1

第一个答案是正确的。默认属性文件是 application.properties 或 application.yml。

引导程序文件适用于 Spring Cloud。

查看 http://projects.spring.io/spring-cloud/spring-cloud.html#_the_bootstrap_application_context

如果您使用的是spring cloud,并且引导程序文件不起作用,则需要启用“cloud”Spring配置文件。

例如使用:

./gradlew -Dspring.profiles.active=cloud bootrun 

./mvnw spring-boot:run -Dspring.profiles.active=cloud

答案 2

默认情况下,如果未指定任何属性源,则 Spring boot 将在 文件中查找您的属性。因此,应将属性文件重命名为该默认名称,或手动为 bootstrap.properties 指定属性源application.properties


推荐