0

У меня есть пользовательская реализация PropertySourcesPlaceholderConfigurer, которую я использую для загрузки дополнительных источников ресурсов и размещения их в разных положениях (один на конце и один до системных свойств). Таким образом, свойства могут быть переопределены на разных уровнях.Как загружать бобы на основе пользовательских свойств

Основываясь на некоторых свойствах, мне нужно загрузить множество бобов. Для этого я реализую ImportBeanDefinitionRegistrar.

К сожалению, ImportBeanDefinitionRegistrar выполнен до PropertySourcesPlaceholderConfigurer. Я также попытался использовать @ConditionalOnProperty, с тем же результатом. И с PropertySourceFactory, который выполняется в начале, но в этот момент я не могу разместить эти дополнительные источники свойств.

Есть ли способ добавить дополнительные PropertySource в пользовательском порядке до ImportBeanDefinitionRegistrar или в начале жизненного цикла весны?

У меня есть sandbox app, чтобы играть с концепцией. На самом деле у меня это, как в домашней библиотеке для приложений Spring и Spring Boot, для обеспечения дополнительных функций со свойствами.

ответ

0

Вы должны реализовать EnvironmentPostProcessor и переместить всю логику для источников собственности. Ваш текущий проект нарушен в том смысле, что у вас нет гарантии, что @PropertySource будет обработан раньше (на самом деле это не так).

+0

Спасибо за совет, я попробую этот подход. К сожалению, я строил эту концепцию, как в домашней библиотеке для приложения Spring и Spring Boot. Есть ли что-то подобное для Spring-приложений (устаревшее без Spring Boot)? –

+0

Если вы используете обычное приложение Spring, вы можете загрузить контекст. Поэтому просто напишите код, который настроит среду до обновления контекста. [Этот вопрос] (https://jira.spring.io/browse/SPR-14386), вероятно, связан. –