Spring Boot - Загружать бин, только если он включен свойством - PullRequest
0 голосов
/ 05 сентября 2018

У меня есть приложение Spring Boot с различными подмодулями, которое также содержит компоненты пружины. А в основных веб-модулях я использую 70% бинов из подмодулей. Это зависит от свойств application.yml, если группа свойств (которая указывает на bean-компонент) включена или нет.

Сначала я хотел создать Aspect-s, поэтому, когда вызывается метод bean-компонента (который не включен его свойством), затем генерируется исключение. Это решение может работать, но тогда мне нужно будет создать классы Aspect, аннотации методов, импортировать все больше и больше зависимостей.

Так что мне просто интересно, есть ли какое-нибудь другое более простое решение для отключения бина или вообще не загружается в контейнер загрузочной пружины?

Я хотел бы представить что-то вроде @DependsOn, но для этого вам нужно дать имя имени компонента, но вы не можете использовать эту аннотацию для работы со свойством yml.

Другое простое решение - @Bean или @Import для каждого компонента, которым я хочу управлять с помощью контейнера Spring, вместо @Import всего один раз из подмодулей, но тогда это статическая настройка, которая не может быть перезаписана одним свойством с yml.

1 Ответ

0 голосов
/ 05 сентября 2018

Spring представил концепцию условных выражений довольно давно. Spring Boot в значительной степени использует это для условного включения функций. Он даже создал множество условных правил , которые вы можете использовать.

Одним из таких правил является , обусловленное правилом свойства. Чтобы использовать это правило, добавьте аннотацию @ConditionalOnProperty к вашему бобу. Теперь оно будет включено, только если указанное свойство включено или имеет определенное значение.

@ConditionalOnProperty(name="your.property.name")
...