为什么自动装配在以下情况下不起作用:

时间:2013-03-14 13:05:36

标签: spring

我有以下课程:

@component
public class Car extends abstract Vehicle {

  public Car() {
    super(10);
  }

}


public abstract class Vehicle {

   @Autowired
   private Validator em;

   public Vehicle(int i) {
     // init
   }

  public int getVehicle() {
  }
}

当我使用以下内容创建bean时:

applicationContext.getAutowireCapableBeanFactory().createBean(..)

它有一个异常,说明无法注入验证器bean ...

但是,如果我将自动装配更改为setter注入,则其工作方式如下:

public abstract class Vehicle {


   private Validator em;

   public Vehicle(int i) {
     // init
   }

   public int getVehicle() {
   }

   @Autowired
   public set Em(Validator em) {
     this.em = em;
   }

}

有人可以向我解释一下,这与bena生命周期的运作方式有关吗?

1 个答案:

答案 0 :(得分:0)

Spring允许在抽象类中使用@Autowiring,所以我在这里看不到任何问题。如果你在setter上放置注释,我会怀疑你有Validator类的某种循环依赖,所以这就是你必须在setter上添加注释的原因。