- Autowiring is a
mechanism
in Spring that allows the framework toautomatically detect
and inject the dependent beans to the properties of the target bean without the need forexplicit
configuration. - In simple words, when we apply autowiring, then Spring looks for the
dependent
beans in the container andautomatically injects
them into the target object. - Benefits:
- This can
save
a lot oftime and effort
, especially in large-scale applications where there are a large number ofdependencies
between objects.
- This can
- Drawbacks:
- No
control
of the programmer. - It can’t be used for
primitive
and not recommended forstring
values.
- No
`
<bean class="com.autowire.demo.beans.Account" id="account">
<property name="accountId" value="SV-101"/>
<property name="balance" value="50000.0"/>
</bean>
<bean class="com.autowire.demo.beans.Address" id="address">
<property name="houseNo" value="25"/>
<property name="city" value="Bhopal"/>
</bean>
<bean class="com.autowire.demo.beans.Customer" id="customer" autowire="constructor">
</bean>
`
- Here, since for the last bean, no values are injected for Customer.
- Therefore, for constructor with 4 arguments, since no argument is passed so the default values for name will be
null
and age will be0
- Spring will choose automatically which constructor to use out of two.
- But we can add following code to resolve ambiguity to call constructor having first argument as
Account
and second asAddress
.
`
<bean class="com.autowire.demo.beans.Customer" id="customer">
<constructor-arg ref="account"/>
<constructor-arg ref="address"/>
</bean>
`