Spring autowire(按类型)为不同的接口返回不同的实例,这些接口由同一个类实现

时间:2012-03-17 23:57:36

标签: java spring autowired

我有两个界面: InterfaceA InterfaceB ,它们都由具体类 TheClass 实现。这些接口在其他bean中自动装配,如

public class UserA { @Autowired InterfaceA iface;}

public class Framework { @Autowired InterfaceB iface;}

InterfaceA是一个暴露给外部的用户界面,而InterfaceB是一个仅由框架本身使用的内部界面。我这样做是为了在接口级别隔离

我希望它们都连接到 TheClass 的同一个类。但是,Spring将它们连接到 TheClass 的不同实例,即使它是一个单例bean。我可以理解 InterfaceA InterfaceB 是不同的类型,因此连接到不同的 TheClass 实例是合法的。但是,实现多个接口的一个类在Java中很常见。我该如何处理这个案子?按名称自动装配是一种解决方案,但是,我个人喜欢按类型,有没有办法按类型实现这个?

=============================================== ===============================================

对不起,这是我的坏事。我错误地在我的代码中创建了两个ApplicationContext。然后,UserA类从一个ApplicationContext获取TheClass bean,而Framework类从另一个ApplicationCtext获取。 Spring确实为不同的接口返回相同的bean,只要它们由同一个bean实现。

0 个答案:

没有答案