Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 扩展多个接口的接口_Spring_Interface_Spring Bean - Fatal编程技术网

Spring 扩展多个接口的接口

Spring 扩展多个接口的接口,spring,interface,spring-bean,Spring,Interface,Spring Bean,我使用spring&有2个接口 interface A { public void a(); } interface B { public void B(); } 及其实现 class AImpl implements A { public void a(){ // TODO } } class BImpl implements B { public void b(){ // TODO } } 现在我创建了一个接口C interface C exte

我使用spring&有2个接口

interface A {
    public void a();
}

interface B {
    public void B();
}
及其实现

class AImpl implements A {
    public void a(){ // TODO }
}
class BImpl implements B {
    public void b(){ // TODO }
}
现在我创建了一个接口C

    interface C extends A, B {}

有没有什么方法可以让我得到一个方法定义为AImpl&BImpl的C类型bean?你不能制作一个扩展AImpl和BImpl的CImpl,因为Java不支持类的多重继承

但你可以这样做:

class CImpl implements C {
    private A a;
    private B b;

    public CImpl(A a, B b) {
        this.a = a;
        this.b = b;
    }

    public void a() {
        a.a();
    }

    public void b() {
        b.b();
    }
}
并使用以下内容创建您的CImpl:

CImpl c = new CImpl (new AImpl(), new BImpl());

如果您使用Spring(正如您的标记所暗示的那样),您可以将AImpl、BImpl和CImpl配置为bean,并为CImpl的构造函数使用自动连接。

我理解我们不能直接扩展实现(因为有多个实现)。但是,既然我已经提供了这些接口(A&B)的实现,spring是否不可能创建C对象呢?这就是在SpringJPA中创建自定义存储库时的情况。