Spring Setter Injection

In this example , we will see first type of dependency injection in Spring i.e. Setter Injection –

Tools used to create below project – 

  1. Spring 5.0.7.RELEASE
  2. Maven 3.3
  3. Java 8
  4. Eclipse Neon.2

Github Link :   Download

Step 1: Create Simple Maven Project with Spring Configuration

Step 2: Configure maven dependencies

Below pom.xml file contains the dependencies required for spring project –

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">





<!-- Spring 5 dependencies -->



Below project structure will be created for you by Eclipse .







Step 3:  Create Employee.java and Address.java under com.myjavablog.beans package –


package com.myjavablog.beans;

* @author anupb
public class Employee {

private String name;
private Address address;

public String getName() {
return name;

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

public Address getAddress() {
return address;

public void setAddress(Address address) {
this.address = address;

public String toString() {
return "Employee [name=" + name + ", address=" + address + "]";



package com.myjavablog.beans;

* @author anupb
public class Address {

private String city;
private String state;

public String getCity() {
return city;

public void setCity(String city) {
this.city = city;

public String getState() {
return state;

public void setState(String state) {
this.state = state;

public String toString() {
return "Address [city=" + city + ", state=" + state + "]";


These are bean files where we have getters and setters defined.

Step 4: Create ApplicationContext.xml under /src/main/resources-


<div id="crayon-5b537011533c5704156605-2" class="crayon-line crayon-striped-line">

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"

<bean id="EmployeeBean" class="com.myjavablog.beans.Employee">
<property name="name" value="Anup" />
<property name="address" ref="AddressBean"></property>

<bean id="AddressBean" class="com.myjavablog.beans.Address">
<property name="city" value="Pune" ></property>
<property name="state" value="Maharashtra"></property>



You must have noted here that, Employee class has dependency on Address class. So Address is injected into the Employee through Dependency Injection . And as we have initialized address object through setAddress() method in Employee class this is called Setter Dependency Injection. Here ref=”AddressBean” is a reference to AddressBean and its injected into Employee object.

Step 5: Create a SetterMethodMain.java under com.myjavablog package –

package com.myjavablog;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.myjavablog.beans.Address;
import com.myjavablog.beans.Employee;

public class SetterMethodMain {
public static void main(String[] args) {
ApplicationContext beanFactory = new ClassPathXmlApplicationContext("ApplicationContext.xml");

Employee beanInstance = (Employee) beanFactory.getBean("EmployeeBean");

Address add = beanInstance.getAddress();
System.out.println("Employee Name:" + beanInstance.getName() +" City: "+ add.getCity() +" State: "+add.getState());

We have created ApplicationContext which actually loads bean definitions from XML configuration.

Step 6: Clean and install project

Now run the maven clean install phase as below –

Command:  mvn clean install


Right click on project -> Debug As -> Maven build . Below popup will come up –








Step 7: Run the spring application as Java Application










Employee Name:Anup City: Pune State: Maharashtra

Leave a Comment