猿问

如何在启动时加载弹簧@PropertySource

我注意到在启动期间使用的某些属性只能在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.propertiesto移动foo.properties并加载为 a @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加载其余部分的同一点可用?


慕尼黑8549860
浏览 112回答 1
1回答

慕桂英546537

我认为您可以使用“--spring.config.location”属性来指定要使用的属性文件。
随时随地看视频慕课网APP

相关分类

Java
我要回答