In Spring, “Autowiring by Constructor” is actually autowiring by Type in constructor argument. It means, if data type of a bean is same as the data type of other bean constructor argument, auto wire it.
See a full example of Spring auto wiring by constructor.
1. Beans
Two beans, developer and language.
package com.tuts.heomi.netmon; public class Developer { private Language language; public Developer(Language language) { this.language = language; } @Override public String toString() { return "Developer [language=" + language + "]"; } }
package com.tuts.heomi.netmon; public class Language { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "Language [name=" + name + "]"; } }
2. Spring Wiring
Normally, you wire the bean via constructor like this :
<bean id="developer" class="com.tuts.heomi.netmon.Developer"> <constructor-arg> <ref bean="language" /> </constructor-arg> </bean> <bean id="language" class="com.tuts.heomi.netmon.Language" > <property name="name" value="Java" /> </bean>
Output
Developer [language=Language [name=Java]]
With autowire by constructor enabled, you can leave the constructor property unset. Spring will find the compatible data type and wire it automatcailly.
<bean id="developer" class="com.tuts.heomi.netmon.Developer" autowire="constructor" /> <bean id="language" class="com.tuts.heomi.netmon.Language" > <property name="name" value="Java" /> </bean>
Output
Developer [language=Language [name=Java]]
Download Source Code
$ git clone https://github.com/favtuts/java-spring-tutorials.git
$ cd SpringAutoWiringByConstructor