2008-11-10 40 views
0

我想让一段运行时状态决定使用哪个接口的哪个实现,最好是仅通过自动装配。Spring @Autowiring,如何使用对象工厂来选择实现?

我曾尝试制造物体的工厂接口泰德使用动态代理服务器,以及我用限定符胁迫的@Autowired注射使用工厂。限定符是必需的,因为工厂和实现都响应相同的接口。

这个问题是我最终用@Qualifier注释每个@Autowired引用。我真正想做的是用类似@NotCandidateForAutowiringByInterface(我的幻想注释)的方式注释非工厂实现,或者甚至更好地使Spring在注入非合格域时更喜欢单个未合格的bean

我可能会在这里错误地思考,因此欢迎提供备选建议。 任何人都知道如何做到这一点?

回答

1

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

1

我没有看过这个自己,但我注意到Spring JavaConfig是去到M4,它似乎允许通过注释和Java代码的组合更灵活的配置。我想知道它是否会为您的问题提供解决方案。

+0

Spring javaconfig解决了这个问题。但是,一旦你获得完全注释的配置的味道,javaconfig的整个概念似乎过度设计。对于javaconfig为+1 – krosenvold 2008-11-14 17:14:57