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

Java Spring@Autowiring,如何使用对象工厂选择实现?,java,spring,Java,Spring,我试图让一段运行时状态决定使用哪种接口实现,最好只通过自动连接 我尝试为使用动态代理的接口创建对象工厂,并使用限定符强制@Autowired注入使用该工厂。限定符是必需的,因为工厂和实现都响应相同的接口 问题是我最后用@Qualifier注释了每个@Autowired引用。我真正想做的是用@NotCandidateForAutowiringByInterface(我的幻想注释)之类的东西注释非工厂实现,或者更好地让spring在注入到非限定字段时更喜欢单一的非限定bean 我可能在这里的想法是完

我试图让一段运行时状态决定使用哪种接口实现,最好只通过自动连接

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

问题是我最后用@Qualifier注释了每个@Autowired引用。我真正想做的是用@NotCandidateForAutowiringByInterface(我的幻想注释)之类的东西注释非工厂实现,或者更好地让spring在注入到非限定字段时更喜欢单一的非限定bean

我可能在这里的想法是完全错误的,因此欢迎提出其他建议。
有人知道如何做到这一点吗?

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

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

Spring javaconfig解决了这个问题。但是一旦你对完全带注释的配置有了兴趣,javaconfig的整个概念就显得过于复杂了+1用于javaconfig