Skip to main content

Spring bean wiring (Dependency Injection)

In spring application, you have two ways for injecting beans. These are,
 1. Setter based injection.
 2. Constructor based injection.
You can able to use primitive type as well as reference type for injecting.

Example for setter based injection.

In this example I am going to inject the room object into home using setter method.

1.  Create a new Room bean like this.
     package com.setterinject;
     public class Room {
       private String roomName;
       public String getRoomName() {
            return roomName;
       }
       public void setRoomName(String roomName) {
            this.roomName = roomName;
       }
    }
2 .Create a new Home bean POJO class like this 
    package com.setterinject;
    public class Home {
      private String homeName;
      private Room room;
      public String getHomeName() {
            return homeName;
      }
      public void setHomeName(String homeName) {
            this.homeName = homeName;
      }
      public Room getRoom() {
            return room;
      }
      // Setter injection. The room object inject through setter method.
      public void setRoom(Room room) {
            this.room = room;
      }    
    }
Here I have used setter method for injecting room class into Home. See the beans.xml file.

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd">

      <bean id="roomBean" class="com.setterinject.Room">
            <property name="roomName" value="Kitchen"></property>
      </bean>
      <bean id="homeBean" class="com.setterinject.Home">
            <property name="homeName" value="Home1"></property>
            <property name="room" ref="roomBean"></property>
      </bean>
</beans>

The property tag used for setter injection. 

3. Execute the this main method.

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
import com.constructorinject.Home;

public class ExecuteHome {
      public static void main(String[] args) {
            ApplicationContext context = new FileSystemXmlApplicationContext("classpath:beans.xml");
            Home home1 = context.getBean("homeBean",Home.class);
            System.out.println("Home name: " + home1.getHomeName());
            System.out.println("Room name: " + home1.getRoom().getRoomName());
      }
}  

You will get result like this.
 Home name: Home1
 Room name: Kitchen


Example for constructor based injection.

In this example I am going to constructor the room object into home using setter method. 

1. Modify the Home bean class like this

    public class Home {
      private String homeName;
      private Room room;
      //Constructor injection.
      public Home(Room room) {
            this.room = room;
      }
      public String getHomeName() {
            return homeName;
      }
      public void setHomeName(String homeName) {
            this.homeName = homeName;
      }
      public Room getRoom() {
            return room;
      }
   }
Here I have used constructor for injecting room class into Home. See the beans.xml file. 

2. Modify the bean.xml file like this.

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd">

      <bean id="roomBean" class="com.constructorinject.Room">
            <property name="roomName" value="Kitchen"></property>
      </bean>
      <bean id="homeBean" class="com.constructorinject.Home">
            <constructor-arg index="0" ref="roomBean"></constructor-arg>
            <property name="homeName" value="Home1"></property>
      </bean>
</beans> 

The constructor tag used for constructor injection. The index refer the constructor parameter index, it's start with 0.

3. Execute the main method, I mentioned earlier you will get the same result.

Comments

Popular posts from this blog

Ext JS 4 – Creating web page using Ext.container.Viewport class and region propery

The Ext.container.Viewport is used for creating general web page and region property is used for splitting web page into different parts. Ext.container.Viewport is a specialized container represents the viewable area of the application (the browser area). It render itself to the document body, there is no need for providing renderTo property and it automatically sizes itself to size of the browser viewport. The viewport also re-size the child elements based on view area(based on browser width and height). The default layout of the viewport is border layout and we can customize this property according to our requirements. The viewport does not provide any scrolling. If necessary, the child elements(generally panels) within viewport needs to provide a scroll feature by using autoScroll property. See the below example for better understanding. This is Home.js file placed into app/view folder. Ext.define('MyApp.view.Home', { extend : 'Ext.container.Viewport&#

Getting servlet init parameter that is defined in web.xml

1. Create a new dynamic web project using eclipse. 2. Create a one new servlet and include the following code. package com.controller ; import java.io.IOException; import javax.servlet .ServletConfig; import javax.servlet .ServletException; import javax.servlet .annotation.WebServlet; import javax.servlet .http.HttpServlet; import javax.servlet .http.HttpServletRequest; import javax.servlet .http.HttpServletResponse; @ WebServlet ( "/LoginController" ) public class LoginController extends HttpServlet {                 private static final long serialVersionUID = 1L;                 public LoginController() {         super ();     }     protected void doPost( HttpServletRequest request, HttpServletResponse response) throws ServletException , IOException {                                 ServletConfig config = getServletConfig ();                                 System.out.println( "Init parameter user nam

Simple Login Application Using Spring MVC and Hibernate – Part 1

 I hope developers working in web application development might hear about MVC architecture. Almost all technologies provide support for MVC based web application development, but the success is based on many factors like reusable of the code, maintenance of the code, future adaption of the code, etc..,  The success of the Spring MVC is “ Open for extension and closed for modification ” principle. Using Spring MVC the developers can easily develop MVC based web application. We don’t need any steep learning curve at the same time we need to know the basics of spring framework and MVC architecture. The Spring MVC consists of following important components. 1. Dispatcher servlet 2. Controller 3. View Resolver 4. Model Spring MVC - Overview  The overall architecture of Spring MVC is shown here.  1. When “Dispatcher Servlet” gets any request from client, it finds the corresponding mapped controller for the request and just dispatches the request to the corresponding contro