У меня есть многорежимное веб-приложение SpringBoot от maven.У меня есть подмодуль, называемый config-module , который имеет класс конфигурации:
@Configuration
public class PropertiesConfig {
@Bean
public YamlPropertiesFactoryBean errorPropertiesFromYamlFile() {
final YamlPropertiesFactoryBean yaml = new YamlPropertiesFactoryBean();
yaml.setResources(new ClassPathResource("errorMessages.yml"));
return yaml;
}
}
У меня есть web-app-module модуль maven, который имеетпредыдущий config-module как зависимость и как импортированное пружинное приложение.
В этом главном модуле у меня также есть класс конфигурации, который загружает новые свойства:
@Configuration
public class WebPropertiesConfig {
@Bean
public YamlPropertiesFactoryBean webPropertiesFromYamlFile() {
final YamlPropertiesFactoryBean yaml = new YamlPropertiesFactoryBean();
yaml.setResources(new ClassPathResource("webProperties.yml"));
return yaml;
}
}
И в этом модуле у меня также есть такой класс:
@Component
@ConfigurationProperties(prefix = "webpart")
public class ConfigPropertiesMapper {
@PostConstruct
public void init() {
//do something here
}
}
И я не знаю, откуда он, но фактический порядок инициализации таков (я проверил его в режиме отладки):
PropertiesConfig.errorPropertiesFromYamlFile()
создание bean-компонента из конфигурационного модуля ConfigPropertiesMapper.init()
инициализация PostConstruct из web-app-модуля WebPropertiesConfig.webPropertiesFromYamlFile()
создание bean-компонента из web-app-module
Почему это так?И как я мог установить порядок в этом?:
PropertiesConfig.errorPropertiesFromYamlFile()
WebPropertiesConfig.webPropertiesFromYamlFile()
ConfigPropertiesMapper.init()
Я попытался с аннотациями @Order
, @Qualifier
, @Primary
, но не смог решить эту проблему.
Я знаю еще одну аннотацию: @DependsOn
.Но, честно говоря, я не хочу использовать его, потому что тогда мне нужно добавить эту аннотацию ко всем методам, на которых есть @PostConstruct
.