Spring Setter Injection with NonString Collection (original) (raw)

Last Updated : 18 Feb, 2022

Dependency Injection is the main functionality provided by Spring IOC(Inversion of Control). The Spring-Core module is responsible for injecting dependencies through either Constructor or Setter methods. In Setter Dependency Injection(SDI) the dependency will be injected with the help of setters and getters methods. A bean-configuration file is used to set DI as SDI in the bean. For this, the property to be set with the SDI is declared under the tag in the bean-config file.

A Collection in java is a group of individual objects. Spring framework provides us facility of Setter injection using the following Collections:

Implementation

A. Company.java

A company can have multiple employees. Here the Company class has a relationship with the Employee class. The Company class will contain the instances of Employee class. Hence, the Employee object will be the dependent object. We will use a list of this dependent object to demonstrate setter injection with non-string(dependent object) collection(list).

Java `

// Java Program to Illustrate Company Class

package com.geeksforgeeks.org;

// Importing required classes import java.util.*;

// Class class Company {

// Class data members
private String companyName;
private List<Employee> employees;

// Setter
public void setCompanyName(String companyName)
{
    this.companyName = companyName;
}

// Setter
public void setEmployees(List<Employee> employees)
{
    this.employees = employees;
}

// method
public String getCompanyName() { return companyName; }

public List<Employee> getEmployees()
{
    return employees;
}

// Method
public void display()
{
    System.out.println("Company: " + companyName);
    System.out.println("Empoyees:");

    // Iterating over using for each loop
    for (Employee employee : employees) {
        System.out.println(employee.toString());
    }
}

}

`

B. Employee.java

Employee class has the following properties:

// Java Program to Illustrate Employee Class

package com.geeksforgeeks.org;

// Class class Employee {

// Class data members
private String name;
private String employeeID;
private String department;

// Method
public String getName() { return name; }

// Setter
public void setName(String name) { this.name = name; }

// Getter
public String getEmployeeID() { return employeeID; }

// Setter
public void setEmployeeID(String employeeID)
{
    this.employeeID = employeeID;
}

// Getter
public String getDepartment() { return department; }

// Setter
public void setDepartment(String department)
{
    this.department = department;
}

// Method
// Overriding toString() method of String class
@Override public String toString()
{
    return ("[Name: " + name
            + ", Employee Id: " + employeeID
            + ", Department: " + department + "]");
}

}

`

C. applicationContext.xml

It is a configuration file that contains all the beans.

XML `

<bean id="employee1" class="com.geeksforgeeks.org.Employee">  
    <property name="name" value="John"></property>  
    <property name="employeeID" value="211"></property>  
    <property name="department" value="Penetration testing"></property>  
</bean>  

<bean id="employee2" class="com.geeksforgeeks.org.Employee">  
    <property name="name" value="Max"></property>  
    <property name="employeeID" value="212"></property>  
    <property name="department" value="Ethical hacking"></property>  
</bean>  

    <bean id="company" class="com.geeksforgeeks.org.Company">  
    <property name="companyName" value="GeeksForGeeks"></property>  
    <property name="employees">
        <list>
             <ref bean="employee1"/>  
            <ref bean="employee2"/> 
         </list>
     </property>
</bean>  

`

D. Main.java

This is our application(main) class which will call the display() method of the Company class

Java `

// Java Program to Illustrate Application Class

package com.geeksforgeeks.org;

// Importing required classes from respective packages import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.xml.XmlBeanFactory; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource;

// Application class public class Main {

// Main driver method
public static void main(String[] args)
{
    // Creating a new class path resource
    Resource resource = new ClassPathResource(
        "applicationContext.xml");

    // Creating an object of BeanFactory class
    BeanFactory factory = new XmlBeanFactory(resource);

    // Creating an object of Company class
    Company c = (Company)factory.getBean("company");

    // Calling display() method inside main() method
    c.display();
}

}

`

Output:

Company: GeeksForGeeks Employees: [Name: John, Employee ID: 211, Department: Penetration testing] [Name: Sam, Employee ID: 212, Department: Ethical hacking]