Spring: Каков наилучший способ настроить во время запуска, какие компоненты сервиса должны быть инициализированы? - PullRequest
2 голосов
/ 05 сентября 2011

Хорошо, это может звучать странно, но здесь есть одна загвоздка: у нас есть приложение на основе Spring, которое имеет разные режимы «настройки».В одном режиме ему нужно использовать дополнительные служебные компоненты (которые подключаются к внешним ресурсам), а в другом - нет.

То, что я сейчас ищу, - это какой-то способ предотвращения этих компонентовинициализированы, которые не нужны в одном режиме настройки, и единственное, с чем я столкнулся, было использование стандартного applicationContext.xml способа ведения дел (т.е. без @Service аннотации) и каким-то образом использование @Autowired(required=false) в этих компонентах в зависимости от (необязательно)) компоненты.

Является ли это верным способом пойти дальше (и даже возможно)?Я действительно не люблю слишком много терять от простоты проводки на основе аннотаций и хочу написать как можно меньше конфигурации XML ...

Ответы [ 2 ]

2 голосов
/ 06 сентября 2011

Если вы можете использовать Spring 3.1, есть новая функция под названием Profiles, которую вы можете использовать, чтобы делать то, что вы хотите.Прочтите этот пост , в котором объясняется, как использовать профили с кодом на основе аннотаций.

1 голос
/ 05 сентября 2011

Один из способов - выделить разные классы для ваших разных «режимов» в их собственных пакетах. Затем вы можете использовать элемент <context:component-scan> в контексте приложения xml, чтобы контролировать, какие пакеты сканируются, а какие нет. Или используйте фильтры включения / исключения (см. http://static.springsource.org/spring/docs/2.5.x/reference/beans.html#beans-scanning-filters). Таким образом, вы можете определить фильтры исключения, например, на основе ваших собственных пользовательских аннотаций.

...