Till now, we inject the dependencies from the spring configuration file as simple types like primitives or wrapper classes (Objects) through the <properties> tag. But in Spring we can define the dependencies for three different types.
- Simple Type
- Object Type and
- Collection Type
In the all previous Spring examples, we have injected the dependencies by using the simple (normal properties) and Object (any property as a type of object). But in this tutorial, we are going to implement spring collection dependency.
Spring Collection Dependency :
In spring we can inject the dependencies as a type of collection. But we have some limitations on that. i.e. Spring container can inject collection type, if and only if the collection type is one of the below 4.
- java.util.List
- java.util.Set
- java.util.Map
- java.util.Properties
We can say that above four are spring collection types. Apart from those four types, we can not implement any collection type in spring.
Spring Collection List Example :
If the dependency type is java.util.List, then in spring configuration file we should configure the List type with <list> tag.
If that list contains the normal properties like String or int or float etc.. we can define the values by using the <value> tag.
If the list contains the Object type, we can assign the bean to that object by using the <ref> tag.
Below is the example for Lists contains normal properties and Object types.
Project Structure :
Spring Maven Dependency:
[sourcecode language=”xml”]
<dependencies>
<!– Spring –>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring-framework.version}</version>
</dependency>
<!– Logging with SLF4J & LogBack –>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>${logback.version}</version>
<scope>runtime</scope>
</dependency>
[/sourcecode]
Spring Collection Beans :
Employee.Java
[sourcecode language=”java”]
package com.onlinetutorialspoint.bean;
public class Employee {
private int empId;
private String empName;
public int getEmpId() {
return empId;
}
public void setEmpId(int empId) {
this.empId = empId;
}
public String getEmpName() {
return empName;
}
public void setEmpName(String empName) {
this.empName = empName;
}
}
[/sourcecode]
Department.java
[sourcecode language=”java” highlight=”8-9″]
package com.onlinetutorialspoint.bean;
import java.util.List;
public class Department {
private int deptId;
private String deptName;
private List<Employee> employees;
private List<String> telephoneNumbers;
public int getDeptId() {
return deptId;
}
public void setDeptId(int deptId) {
this.deptId = deptId;
}
public String getDeptName() {
return deptName;
}
public void setDeptName(String deptName) {
this.deptName = deptName;
}
public List<Employee> getEmployees() {
return employees;
}
public void setEmployees(List<Employee> employees) {
this.employees = employees;
}
public List<String> getTelephoneNumbers() {
return telephoneNumbers;
}
public void setTelephoneNumbers(List<String> telephoneNumbers) {
this.telephoneNumbers = telephoneNumbers;
}
}
[/sourcecode]
Spring Collection Configuration :
spring configuration.xml
[sourcecode language=”xml” highlight=”9-21″]
<?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 http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">
<bean id="deptBean" class="com.onlinetutorialspoint.bean.Department">
<property name="deptId" value="20501" />
<property name="deptName" value="IT" />
<property name="telephoneNumbers">
<list>
<value>0409696969</value>
<value>0409898989</value>
</list>
</property>
<property name="employees">
<list>
<ref bean="empBean" />
<ref bean="empBean2" />
<ref bean="empBean3" />
</list>
</property>
</bean>
<bean id="empBean" class="com.onlinetutorialspoint.bean.Employee">
<property name="empId" value="101" />
<property name="empName" value="Chandra Shekhar" />
</bean>
<bean id="empBean2" class="com.onlinetutorialspoint.bean.Employee">
<property name="empId" value="102" />
<property name="empName" value="Robert" />
</bean>
<bean id="empBean3" class="com.onlinetutorialspoint.bean.Employee">
<property name="empId" value="103" />
<property name="empName" value="John" />
</bean>
</beans>
[/sourcecode]
Run the Application :
Main.java
[sourcecode language=”java”]
import java.util.List;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.onlinetutorialspoint.bean.Department;
import com.onlinetutorialspoint.bean.Employee;
public class Main {
public static void main(String args[]) {
ApplicationContext context = new ClassPathXmlApplicationContext("springconfiguration.xml");
Department department = (Department) context.getBean("deptBean");
System.out.println("DeptId : " + department.getDeptId());
System.out.println("DeptName : " + department.getDeptName());
List<String> telephoneNumbers = department.getTelephoneNumbers();
int i = 1;
for (String number : telephoneNumbers) {
System.out.println("Telephone " + i + " :" + number);
i++;
}
System.out.println("===================");
System.out.println("Employees Under Department No : "+department.getDeptId());
List<Employee> employees = department.getEmployees();
for (Employee employee : employees) {
System.out.println("Employee Id : " + employee.getEmpId());
System.out.println("Empoyee Name : " + employee.getEmpName());
}
}
}
[/sourcecode]
Output :
DeptId : 20501 DeptName : IT Telephone 1 :0409696969 Telephone 2 :0409898989 =================== Employees Under Department No : 20501 Employee Id : 101 Empoyee Name : Chandra Shekhar Employee Id : 102 Empoyee Name : Robert Employee Id : 103 Empoyee Name : John
Happy Learning 🙂
Leave A Comment