Я заметил, что при запуске используются определенные свойства, которые можно установить только в 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
загружены?