多个接口的Spring声明

时间:2018-01-29 11:25:30

标签: spring oop interface

我有一些架构问题。 我有两个不同的接口(IntefaceAIntefaceB)和一个类(MyClass),它们实现了这些接口。 当我像这样注入MyClass时:

@Autowired
InterfaceA myClass;

我无法使用InterfaceB中的实施方法。

我的想法是使用instanceof MyClass进行检查,以便能够从InterfaceB调用该方法,但当前自动对象InterfaceA不是来自MyClass的(子)类型{1}}。

if(myClass instanceof MyClass) {
                InterfaceB myClassFromInterfaceB =(InterfaceB) myClass;
                result= myClassFromInterfaceB.methodFromInterfaceB
            }

如何在spring中自动装载一个对象,可以调用所有接口的所有方法,这些方法将由此对象实现?

只能声明两个不同的对象吗?

1 个答案:

答案 0 :(得分:1)

如果代码可能被更改,最简洁的方法是创建一个由这两个接口组成的接口,并使您的实现类派生出来。
然后你可以声明你的字段注入这个超级接口类型:

@Autowired
InterfaceAandB myClass;

如果代码无法更改,则可以在bean中声明两个字段自动装配,并为每个字段指定不同的接口类型。
它将导致同一个对象注入两次但由两个变量引用不同的接口:

@Autowired
InterfaceA myA;

@Autowired
InterfaceB myB;