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