Constructor Dependency Injection in Spring

 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:
  • Student.java
  • constructorArgConfig.xml
  • Test.java
Student.java

package constructorArg;


import java.util.LinkedHashSet;

import java.util.List;

import java.util.Map;


public class Student {


private int roll;

private String name;

private LinkedHashSet phnNo;

private List<String> degree;

private Map<String,Integer> courses;

public Student(int roll, String name, LinkedHashSet phnNo, List<String> degree, Map<String, Integer> courses) {

super();

this.roll = roll;

this.name = name;

this.phnNo = phnNo;

this.degree = degree;

this.courses = courses;

}

@Override

public String toString() {

return "Student{" +

"\n roll=" + roll +

"\n name=" + name +

"\n phnNo=" + phnNo +

"\n degree=" + degree +

"\n courses=" + courses +

'}';

}


}






  • constructorArgConfig.xml

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:context="http://www.springframework.org/schema/context"

xsi:schemaLocation="http://www.springframework.org/schema/beans

https://www.springframework.org/schema/beans/spring-beans.xsd

http://www.springframework.org/schema/context

http://www.springframework.org/schema/context/spring-context.xsd">

<bean class="constructorArg.Student" name="studentBean">

<constructor-arg value="10"/>

<constructor-arg value="Priya"/>

<constructor-arg>

<set>

<value>9215111448</value>

<value>8026570991</value>

<value>7015247338</value>

</set>

</constructor-arg>

<constructor-arg>

<list>

<value>BTech</value>

<value>MTech</value>

</list>

</constructor-arg>

<constructor-arg>

<map>

<entry key="Hibernate" value="1"/>

<entry key="Spring" value="2"/>

<entry key="MySQL" value="1"/>

</map>

</constructor-arg>

</bean>

</beans>





Test.java




package constructorArg;


import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;


public class Test {


public static void main(String[] args) {

// TODO Auto-generated method stub

ApplicationContext ctx=new ClassPathXmlApplicationContext("constructorArg/constructorArgConfig.xml");

Student s = (Student)ctx.getBean("studentBean");

System.out.println(s);

}


}




Output :


Student{

roll=10

name=Priya

phnNo=[9215111448, 8026570991, 7015247338]

degree=[BTech, MTech]

courses={Hibernate=1, Spring=2, MySQL=1}}















Comments

Popular posts from this blog

Two Sum II - Input Array Is Sorted

Comparable Vs. Comparator in Java

Increasing Triplet Subsequence