如何在启动时加载spring @PropertySource

时间:2019-01-27 15:46:39

标签: java spring spring-boot properties-file

我注意到启动期间使用了某些属性,这些属性只能在application.properties中进行设置。

例如:

src / main / java / foo / bar / Foo.java

@SpringBootApplication
public class Foo {

    private static final Logger log = LoggerFactory.getLogger(Foo.class);

    public static void main(String... args) {
        ApplicationContext appContext = SpringApplication.run(Foo.class, args);
        log.info(appContext.getEnvironment().getProperty("spring.profiles.active"));
    }

}

src / main / resources / application.properties

spring.profiles.active=dev

控制台日志:

09:23:48.827 : The following profiles are active: dev
09:23:50.832 : dev

配置文件在启动时被识别为dev,并且在Environment中可用。这是预期的行为。

但是,如果我将相同的属性从application.properties移到foo.properties并将其作为@PropertySource加载,则行为会改变。

src / main / java / foo / bar / FooConfiguration.java

@Configuration
@PropertySource("classpath:foo.properties")
public class FooConfiguration { }

src / main / resources / foo.properties

spring.profiles.active=prod

src / main / resources / application.properties

# empty

控制台日志:

09:35:18.141 : No active profile set, falling back to default profiles: default
09:35:20.175 : prod

启动过程中不会考虑配置文件,但是启动后Environment上可以使用该配置文件。

问题:如何从@PropertySource加载属性,并在启动时同时加载其余application.properties的属性?

1 个答案:

答案 0 :(得分:2)

我认为您可以使用“ --spring.config.location”属性来指定要使用的属性文件。