2016-01-14 70 views
1

我有3个班。是否有可能使Spring仅在继承中实例化父bean(而不是实例化子bean)?

  1. 一个抽象类,abstractA与受保护的构造
  2. 一类扩展抽象类,父母与一对夫妇构造
  3. 的类继承了父类,子同一个构造函数

    @CustomComponent 
    public abstract class abstractA { 
        Object var1; 
        Object var2; 
        Object var3; 
    
        @Autowired 
        protected abstractA(Object arg1, Object arg2, Object arg3){ 
        var1 = arg1; 
        var2 = arg2; 
        var3 = arg3; 
        } 
    
    } 
    

这是从抽象类延伸的父类

@CustomComponent 
public class parent extends abstractA { 


     @Autowired 
     public parent(Object arg2, Object arg3){ 
     this(arg1FromSomeEnum, arg2, arg3); 
     } 

     protected parent(Object arg1, Object arg2, Object arg3){ 
     super(arg1, arg2, arg3); 
     } 

    } 

这是从父扩展子类

@CustomComponent 
public class child extends parent { 

     @Autowired 
     public child(Object arg2, Object arg3){ 
     super(arg1FromSomeEnum, arg2, arg3); 
     } 

    } 

自定义组件看起来像这样

@Component 
@Scope(value = "prototype") 
@Inherited 
public @interface CustomComponent { 
    String value() default ""; 
} 

所以当春天实例化所有豆类为特定的测试,它实例化,子bean正确。当父bean被实例化时,它获得2个bean [父和子]。所以,我最终得到错误,

型亲

现在的多豆,这里有什么问题?如何获得实例化的权利?我应该使用@Qualifier还是@value,如果是的话,在哪里?

+0

你有任何类级别的注解,像@Component?您能否指定您的预期结果?也许粘贴测试的代码。 – Rozart

+0

是的。这些类具有@Component注释。预期的结果不是得到错误。我只需要一个bean来为父项实例化。 –

回答

相关问题