看看上豆http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#beans-autowired-annotation-qualifiers
设置属性会发生后,其构造函数或工厂方法来构造。默认情况下,bean是通过名称自动装配的,值是使用setter方法设置的。所以在你的情况下,该字段将在构造函数之后设置。
这是因为
@Autowired
BeanA beanA;
实际上意味着要自动装配的是类实例的领域。在你的情况下beanA不是一个真正的构造函数arg。 (?嗯,这里是一个快速的问题,是编译后保留构造函数的参数名称是否有与此相关的任何调试标志?)
由于从spring documentation这个例子说,你可以申请到@Autowired构造函数和字段:
public class MovieRecommender {
@Autowired
private MovieCatalog movieCatalog;
private CustomerPreferenceDao customerPreferenceDao;
@Autowired
public MovieRecommender(CustomerPreferenceDao customerPreferenceDao) {
this.customerPreferenceDao = customerPreferenceDao;
}
// ...
}
让我知道你是否需要任何更多的帮助。
哦,只是一个小点。你似乎在构造函数中调用beanA上的method()。如果方法可以被覆盖,这不是一个好主意。我知道这只是你在这里记下的一个例子,但只是一个小心的字眼。