Spring @Autowiring,如何使用对象工厂来选择实现?

我试图让一段运行时状态决定使用的接口的WHICH实现,最好只通过自动assembly。

我已经尝试为接口使用动态代理创建一个对象工厂,并且我使用限定符来强制@Autowired注入以使用工厂。 限定符是必需的,因为工厂和实现都响应相同的接口。

这个问题是我最终用@Qualifier注释每个@Autowired引用。 我真正想做的是使用@NotCandidateForAutowiringByInterface(我的幻想注释)来注释非工厂实现,或者甚至更好地使spring更喜欢注入不合格字段时的单个非限定bean

我可能会在这里考虑完全错误的路线,因此欢迎提出其他建议。 任何人都知道如何实现这一目标?

您可以使用@Resource并指定工厂的bean名称。

我自己没有看过这个,但我注意到Spring JavaConfig是M4的,它似乎允许通过注释和Java代码的组合进行更灵活的配置。 我想知道它是否能解决你的问题。