Saturday, October 11, 2025
HomeLanguagesJavaSpring – Setter Injection with Non-String Map

Spring – Setter Injection with Non-String Map

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 <property> 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

The map will have both key and value as non-strings. Key will be Employee which has the following fields:

  • Name
  • Employee ID
  • Department

Value will be Address which has the following parameters:

  • House No.
  • Pincode
  • State
  • Country

A. Company.java

A company has a list of employees.

Java




// Java Program to Illustrate Company Class
   
package com.geeksforgeeks.org;
   
// Importing required classes
import com.neveropen.tech.Address;
import com.neveropen.tech.Employee;
import java.util.*;
import java.util.Map.Entry;
   
// Class
public class Company {
   
    // Class member variable
    private Map<Employee, Address> employees;
   
    // Method
    public void display()
    {
        // Iterating over Map using for each loop
        for (Map.Entry<Employee, Address> entry :
             employees.entrySet()) {
   
            // Print statement
            System.out.println(
                "Employee Data ->"
                + entry.getKey().toString() + " Address ->"
                + entry.getValue().toString());
        }
    }
}


B. Employee.java

Java




// Java Program to Illustrate Employee Class
   
package com.geeksforgeeks.org;
   
// Importing required classes
import com.neveropen.tech.Address;
   
// Class
public class Employee {
   
    // Class data members
    private String name;
    private String employeeID;
    private String department;
   
    public Employee(String name, String employeeID,
                    String department)
    {
        // This keyword refers to current instance itself
        this.name = name;
        this.employeeID = employeeID;
        this.department = department;
    }
   
    // Method
    // Overriding toString() method
    public String toString()
    {
        return ("[" + name + "," + employeeID + ","
                + department + "]");
    }
}


C. Address.java

Java




// Java Program to Illustrate Address Class
   
package com.geeksforgeeks.org;
   
// Class
public class Address {
   
    // Class data members
    private String houseNo;
    private String pincode;
    private String state;
    private String country;
   
    // Constructor
    public Address(String houseNo, String pincode,
                   String state, String country)
    {
        super();
        this.houseNo = houseNo;
        this.pincode = pincode;
        this.state = state;
        this.country = country;
    }
   
    // Method
    // Overriding toString() method
    public String toString()
    {
        return "[" + houseNo + "," + pincode + "," + state
            + "," + country + "]";
    }
}


D. applicationContext.xml

Configuration file for our project.

Java




<?xml version="1.0" encoding="UTF-8"?>  
<beans  
    xsi:schemaLocation="http://www.springframework.org/schema/beans   
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">  
    
    <bean id="employee1" class="com.neveropen.tech.Employee">  
      <property name="name" value="Sahil"></property>  
      <property name="employeeID" value="101"></property>  
      <property name="department" value="Game development"></property>  
    </bean>  
      <bean id="address1" class="com.neveropen.tech.Address">  
      <property name="houseNo" value="2"></property>  
      <property name="pincode" value="110111"></property>  
      <property name="state" value="Bihar"></property>  
      <property name="country" value="India"></property>  
    </bean>  
  
    <bean id="company" class="com.neveropen.tech.Company">  
      <map>  
      <entry key-ref="employee1" value-ref="address1"></entry>  
      </map>  
      </property>  
    </bean>  
    
</beans>


E. Test.java

Main file for running our project.

Java




// Java Program to Illustrate Application Class
   
package com.geeksforgeeks.org;
   
// importing required classes
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
   
// Application class
// Main class
public class Test {
   
    // Main driver method
    public static void main(String[] args)
    {
        // Creating a class path resource
        Resource resource = new ClassPathResource(
            "applicationContext.xml");
   
        // Creating an object of Beanfactory class
        BeanFactory factory = new XmlBeanFactory(resource);
   
        // Creating an object of Employee class
        Company c = (Company)factory.getBean("company");
   
        // Calling print() method inside main() method
        c.display();
    }
}


Output:

Employee Data -> [Sahil, 101, Game development], Address -> [2, 110111, Bihar, India]
RELATED ARTICLES

Most Popular

Dominic
32352 POSTS0 COMMENTS
Milvus
87 POSTS0 COMMENTS
Nango Kala
6720 POSTS0 COMMENTS
Nicole Veronica
11885 POSTS0 COMMENTS
Nokonwaba Nkukhwana
11941 POSTS0 COMMENTS
Shaida Kate Naidoo
6840 POSTS0 COMMENTS
Ted Musemwa
7103 POSTS0 COMMENTS
Thapelo Manthata
6794 POSTS0 COMMENTS
Umr Jansen
6794 POSTS0 COMMENTS