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.
public String
getRoomName() {
public void
setRoomName(String roomName) {
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;
return 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