我有一些架构问题。
我有两个不同的接口(IntefaceA
,IntefaceB
)和一个类(MyClass
),它们实现了这些接口。
当我像这样注入MyClass
时:
@Autowired
InterfaceA myClass;
我无法使用InterfaceB
中的实施方法。
我的想法是使用instanceof MyClass
进行检查,以便能够从InterfaceB
调用该方法,但当前自动对象InterfaceA
不是来自MyClass
的(子)类型{1}}。
if(myClass instanceof MyClass) {
InterfaceB myClassFromInterfaceB =(InterfaceB) myClass;
result= myClassFromInterfaceB.methodFromInterfaceB
}
如何在spring中自动装载一个对象,可以调用所有接口的所有方法,这些方法将由此对象实现?
只能声明两个不同的对象吗?
答案 0 :(得分:1)
如果代码可能被更改,最简洁的方法是创建一个由这两个接口组成的接口,并使您的实现类派生出来。
然后你可以声明你的字段注入这个超级接口类型:
@Autowired
InterfaceAandB myClass;
如果代码无法更改,则可以在bean中声明两个字段自动装配,并为每个字段指定不同的接口类型。
它将导致同一个对象注入两次但由两个变量引用不同的接口:
@Autowired
InterfaceA myA;
@Autowired
InterfaceB myB;