Посмотрите на http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#beans-autowired-annotation-qualifiers
Настройка свойств на боб будет происходить после того, как она строится с помощью конструктора или метода фабрики. По умолчанию бобы автоматически отбираются по имени, а значения устанавливаются с использованием методов setter. Поэтому в вашем случае поле будет установлено после конструктора.
Это потому, что
@Autowired
BeanA beanA;
на самом деле означает, что вы хотите autowire в поле этого экземпляра класса. beanA в вашем случае не является конструктором arg. (? Ну, вот быстрый вопрос, имена аргументов конструктора нераспределенных после компиляции Есть ли флаг отладки, связанный с этим?)
В этом примере из spring documentation говорит, вы можете применить @Autowired к конструкторам и полям:
public class MovieRecommender {
@Autowired
private MovieCatalog movieCatalog;
private CustomerPreferenceDao customerPreferenceDao;
@Autowired
public MovieRecommender(CustomerPreferenceDao customerPreferenceDao) {
this.customerPreferenceDao = customerPreferenceDao;
}
// ...
}
Сообщите мне, если вам нужна помощь.
О, и только незначительная точка. Кажется, вы вызываете метод() в beanA в своем конструкторе. Это не очень хорошая идея, если метод можно переопределить. Я знаю, что это всего лишь пример того, что ты записал здесь дюн, но просто предостережение.