Spring @ Autowiring, как использовать фабрику объектов для выбора реализации? - PullRequest
0 голосов
/ 10 ноября 2008

Я пытаюсь разрешить части состояния времени выполнения решать, какую реализацию интерфейса использовать, желательно исключительно с помощью автопроводки.

Я пытался создать фабрику объектов для интерфейса, который использует динамические прокси, и я использовал квалификаторы, чтобы принудительно использовать инъекции @Autowired для использования фабрики. Квалификаторы необходимы, потому что как фабрика, так и реализации отвечают одному и тому же интерфейсу.

Проблема в том, что я заканчиваю тем, что аннотирую каждую ссылку @Autowired ссылкой @Qualifier. Что я действительно хочу сделать, так это аннотировать не-фабричные реализации чем-то вроде @NotCandidateForAutowiringByInterface (моя фантазийная аннотация), или даже лучше сделать так, чтобы Spring предпочитал один неквалифицированный bean-компонент при внедрении в неквалифицированное поле

Я могу думать здесь совершенно неправильно, поэтому альтернативные предложения приветствуются. Кто-нибудь знает, как это сделать?

Ответы [ 2 ]

1 голос
/ 11 ноября 2008

Вы можете использовать @Resource и указать имя bean-компонента фабрики.

1 голос
/ 10 ноября 2008

Я сам не смотрел на это, но заметил, что Spring JavaConfig сделан в M4 и, кажется, позволяет более гибкую настройку благодаря комбинации аннотаций и кода Java. Интересно, предложит ли это решение вашей проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...