Как загрузить spring @PropertySource при запуске - PullRequest
0 голосов
/ 27 января 2019

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

Я думаю, что вы можете использовать свойство "--spring.config.location", чтобы указать, какой файл свойств вы хотите использовать.

...