我如何访问' spring.application.name'什么时候在bootstrap.properties中定义?

时间:2016-12-15 01:58:34

标签: java spring spring-boot dependency-injection

我有以下spring-boot 1.4.2.RELEASE示例应用程序

@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'? 需要在那里定义它以支持其他Spring引导云。

2 个答案:

答案 0 :(得分:6)

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

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

请参阅http://projects.spring.io/spring-cloud/spring-cloud.html#_the_bootstrap_application_context

如果您使用的是spring cloud,并且bootstrap文件无效,则需要启用" cloud"春季简介。

例如使用:

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

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

答案 1 :(得分:4)

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