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