我有两个界面: 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实现。