加载活动属性文件Spring Boot

时间:2019-10-23 10:50:06

标签: spring-boot

我想从活动配置文件中读取值,或者可以说活动属性文件。 我有三个属性文件

  • application-dev.properties
  • application-stage.properties
  • application-prod.properties

我已将有效的个人资料设置为dev,如下所示

spring.profiles.active=dev

我的application-dev.properties文件中有一个我想在班上阅读的条目。

application-dev.properties 文件

fix.connection.type=initiator

我尝试阅读此条目

@Configuration
@PropertySource("classpath:application-${spring.profiles.active}.properties")
@Component
public class AdaptorDestination {
    @Value("${fix.connection.type}")
    private String connectionType;
}

例外

nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'spring.profiles.active' in value "classpath:application-${spring.profiles.active}.properties"

请帮帮我

2 个答案:

答案 0 :(得分:1)

您无需使用@PropertySource批注即可使用@Value批注加载属性。 Spring将从当前的活动配置文件中自动加载@Value属性。

此外,您无需在${spring.profiles.active}批注中指定@PropertySource,因为默认情况下Spring总是从当前活动的配置文件中加载属性。 Spring根据配置文件后缀自动解析文件名。

因此,您只需要指定基本文件名,例如: @PropertySource("classpath:application.properties") 如果当前活动的配置文件是“ dev”,Spring将首先从application.properties文件中加载属性,然后使用application-dev.properties文件中的属性覆盖它们。

您可以阅读更多here

答案 1 :(得分:0)

您可以使用注释@Profile("profile-name")确定何时执行该方法。

Spring Profiles