TGViewer
Библиотека Java разработчика Библиотека Java разработчика @bookjava · 10K subscribers
Post #1925 2.44K
Опишите поведение аннотации @Autowired

1. Контейнер определяет тип объекта для внедрения
2. Контейнер ищет бины в контексте(он же контейнер), которые соответствуют нужному типу
3. Если есть несколько кандидатов, и один из них помечен как @Primary, то внедряется он
4. Если используется аннотации @Autowire + Qualifier, то контейнер будет использовать информацию из @Qualifier, чтобы понять, какой компонент внедрять
5. В противном случае контейнер попытается внедрить компонент, основываясь на его имени или ID
6. Если ни один из способов не сработал, то будет выброшено исключение

Контейнер обрабатывает DI с помощью AutowiredAnnotationBeanPostProcessor. В связи с этим, аннотация не может быть использована ни в одном BeanFactoryPP или BeanPP.

Если внедряемый объект массив, коллекция, или map с дженериком, то Spring внедрит все бины подходящие по типу в этот массив(или другую структуру данных). В случае с map ключом будет имя бина.

//параметр указывает, требуется ли DI
@Authowired(required = true/false)

👉@BookJava
  • 👍 12
  • ❤ 2
  • 🔥 1
More from @bookjava
  1. Oct 15, 2026🧠 10 правил безопасного Java-приложения: 1️⃣ Валидация на всех уровнях. 📌 Всегда проверя…
  2. Oct 12, 2026🧠 Проверяешь аргументы вручную? Используй мощь системы типов Java! 📌 Ситуация: часто в м…
  3. Oct 10, 2026🚀 Подборка полезных IT каналов в Max Системное администрирование, DevOps 📌 https://max.r…
  4. Oct 8, 2026📌 Обход коллекций в Java: делаем правильно! Часто вижу, как разработчики по привычке испо…
  5. Oct 7, 2026📌 Stream API: забудьте про peek() Метод peek() в Java Stream API выглядит удобным для отл…
  6. Oct 5, 2026🧠 Dependency Inversion Principle (D в SOLID) Зависимости должны идти от высокоуровневой п…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →