Dependency Injection by Constructor Example

We can inject the dependency by constructor. The <constructor-arg> subelement of <bean> is used for constructor injection. Here we are going to inject

  1. primitive and String-based values
  2. Dependent object (contained object)
  3. Collection values etc.

Injecting primitive and string-based values

Let's see the simple example to inject primitive and string-based values. We have created three files here:

  • Employee.java
  • applicationContext.xml
  • Test.java
Employee.java

It is a simple class containing two fields id and name. There are four constructors and one method in this class.

applicationContext.xml

We are providing the information into the bean by this file. The constructor-arg element invokes the constructor. In such case, parameterized constructor of int type will be invoked. The value attribute of constructor-arg element will assign the specified value. The type attribute specifies that int parameter constructor will be invoked.

Test.java

This class gets the bean from the applicationContext.xml file and calls the show method.

Output:10 null


Injecting string-based values

If you don't specify the type attribute in the constructor-arg element, by default string type constructor will be invoked.

If you change the bean element as given above, string parameter constructor will be invoked and the output will be 0 10.

Output:0 10


You may also pass the string literal as following:

Output:0 Sonoo


You may pass integer literal and string both as following

Output:10 Sonoo