Spring — Autowiring | Code Factory

Code Factory
2 min readJan 19, 2021

Donate : Link

WordPress Blog : Link

Applications… : Link

Spring Tutorial Index Page: Link

  • Main aim of Autowiring is automatic DI.
  • Autowiring type
    By Type
    - By Name
    - Constructor
    - Auto Detect
    - No
  • No is default in autowiring. By default it will not apply DI to your application.
  • By using this concept we can reduce manual DI.
  • You can use autowire attribute in <bean> tag and if you want to use same type for all bean then use default-autowire attribute in <beans> tag.
  • * By Type, By Name, and Auto Detect you can use for setter DI. Constructor and Auto Detect you can use for constructor DI.
  • If you use autowire=”byType” then container will search bean based on by object type.
  • There is a chance to get ambiguity problem in case of attribute=”byType”, we can solve by using autowire-candidate=”false” attribute. autowire-candidate=”false” make bean to not eligible for autowiring.
  • If you use autowire=”byName” then it will try to search by type as well as by using reference name. It will use <bean> tag's id to inject into defined object. Defined object name and bean's id both should be same.
  • In class if we have constructor instead of setter method then we have to use autowire=”constructor” and it will internally use byType mechanism. So it will search for the bean which have same type which used in parameters of constructor.
  • In large application we have number of classes and we don’t know dependencies of classes. In that case you go through autowire=”autodetect”. So if your class is eligible for setter DI then it will do setter DI if not then it will go through constructor DI. Autodetect also it will use byType searching only.
  • * In case of autodetect if class contains default constructor along with setter method it will go for setter DI. If we don’t have default constructor and if we have only parameterized constructor and setter method then it will go through constructor DI.
  • * By Type, Constructor, and Auto Detect will use byType and By Name will use byName only.
  1. Spring — Autowiring using XML Configuration
  2. Spring — Autowiring using @Autowired annotation
  3. Spring — Autowiring using @Resource annotation
  4. Spring — Autowiring using @Inject annotation