Согласно @Autowired Javadoc:Spring @Autowired для инкубационных методов против методов, не инкубационные
Отмечает конструктор, поле, сеттер метод или метод конфигурации, как будет autowired путем инъекций зависимостей объектов Спринга. Только один конструктор (в max) любого данного класса bean-класса может нести эту аннотацию, указывая на конструктор для автоустройства при использовании в качестве Spring-компонента. Такой конструктор не должен быть общедоступным. Поля вводятся сразу после построения компонента, прежде чем вызывать любые методы конфигурации. Такое поле конфигурации не должно быть общедоступным. Способы Config могут иметь произвольное имя и любое количество аргументов; каждый из этих аргументов будет автообновлен с соответствующим компонентом в контейнере Spring.
Bean методы свойство инкубационных эффективно лишь частный случай такого метод общего конфигурационного. Такие методы конфигурации не обязательно должны быть общедоступными. В случае нескольких методов аргументов параметр 'required' равен , применимому для всех аргументов. В случае типа зависимости Collection или Map контейнер будет автоувеличивать все бобы, соответствующие объявленному типу значений . В случае карты ключи должны быть объявлены как типа String и будут разрешены к соответствующим именам компонентов. Примечание , что фактическая инъекция выполняется через BeanPostProcessor, который , в свою очередь, означает, что вы не можете использовать @Autowired для инъекций ссылок в типы BeanPostProcessor или BeanFactoryPostProcessor. Обратитесь к javadoc для класса AutwiredAnnotationBeanPostProcessor (который, по умолчанию, , проверяет наличие этой аннотации).
Мой вопрос в том, что подразумевается под конфигурационными методами? А также, допустим, у меня есть метод setter с @Autowired аннотацией и некоторым произвольным методом с @Autowired аннотацией. Я предполагаю, что метод setter вызывается весной автоматически после создания экземпляра bean, тогда как метод randomAutowred с произвольным именем не будет вызван, правильно? Также как весна понимает, что определенный метод @Autowired следует вызывать после создания экземпляра (seters), в то время как другие не должны? И как это соотносится с заявлением от Javadoc, говоря, что
Bean методы свойство инкубационных эффективно лишь частный случай такой общий метод конфигурации
, где я могу прочитать об этом, весна документация не содержит никакой информации об этом, а также я не смог найти точную логику, используемую весной в ее javadocs.
Правильно ли я понимаю, что всякий раз, когда весна воспринимает метод «autowired», он должен вызывать этот метод после создания экземпляра компонента. Всякий раз, когда весна видит «autwired» на поле, требуется инициализировать это свойство соответствующим компонентом. Всякий раз, когда он видит «autwired» на конструкторах, он обязан вызывать хотя бы один из этих конструкторов. Таким образом, в основном в моей инструкции Initial, я ошибаюсь, что методы non-setter, аннотированные с помощью «autwired», не должны вызываться после создания экземпляра bean-компонента. – dhblah
Вы попадаете в глаз быков! – xyz
[dhblah] (https://stackoverflow.com/users/260894/dhblah) вы не совсем прав о конструкторе. Только один конструктор может иметь @Autowired аннотацию. Он указан в javadoc, который вы приложили. –