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.mkyong.common;

public class Developer {
	private Language language;

	//autowire by constructor
	public Developer(Language language) {
		this.language = language;
	}

	//...

}
package com.mkyong.common;

public class Language {
	private String name;
	//...
}

2. Spring Wiring

Normally, you wire the bean via constructor like this :

	<bean >
		<constructor-arg>
			<ref bean="language" />
		</constructor-arg>
	</bean>
		
	<bean  >
		<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  />
		
	<bean  >
		<property name="name" value="Java" />
	</bean>

Output

Developer [language=Language [name=Java]]

相关文章: