У меня есть конфигурация Spring XML. Мне нужно переписать его, используя аннотации Spring.
Вопрос прямой: есть ли прямая альтернатива Spring XML-оператору <context:property-placeholder location = "classpath*:META-INF/*.properties"/> среди аннотаций Spring, которая будет работать с замаскированными местоположениями, как в примере (classpath*:META-INF/*.properties)? Или какая-нибудь альтернатива, которая просканирует мой путь к классам и найдет там все файлы свойств.
Я пробовал @PropertySource, но похоже, что я не понимаю маскировку. Указание прямых путей к файлам свойств в моем случае не вариант, потому что их количество может меняться независимо.
Альтернативой, которую я искал, было объявление этого компонента в конфигурации:
@Bean
public static PropertySourcesPlaceholderConfigurer propPlaceholder() throws Exception {
PropertySourcesPlaceholderConfigurer propertyConfigurer = new PropertySourcesPlaceholderConfigurer();
propertyConfigurer.setLocations(new PathMatchingResourcePatternResolver().getResources("classpath*:META-INF/*.properties"));
return propertyConfigurer;
}
Это не аннотация, а замена этого оператора XML.
Вы можете использовать класс ConfigurableApplicationContext, а также загружать файлы свойств из разных мест, а также следующим образом:
ConfigurableApplicationContext appContext = new SpringApplicationBuilder(Application.class)
.properties("spring.config.name:application,application2",
"spring.config.location:classpath:/external/application/properties/,classpath:/external/application2/properties")
.build().run(args);
ConfigurableEnvironment env = applicationContext.getEnvironment();
где значение в разделе «spring.config.name» указывает имя файлов свойств (здесь application.properties и application2.properties), а значения в разделе «spring.config.location» указывают путь к вышеупомянутым файлам приложений соответственно.