Sunday, June 24, 2012

Bean postprocessing in spring


Spring provide two opportunities or us to cut into a bean's lifecycle and review or alter its configuration. this is called 'post processing'.The BeanPostProcessor interface gives two opportunities to alter a bean after it has been    
created or wired.
public interface BeanPostProcessor
{
   Object postProcessBeforeInitialization (Object bean,String name) throw BeanException;
   Object postProcessAfterInitialization (Object bean,String name) throw BeanException;
}
                    The postProcessBeforeInitialization() method called before the bean initialization.likewise postProcessAfterInitialization () method called immediately after initialization.

Let see a example to understand -
Directory Structure-

Class Point.java
package com.test;

public class Point {
private int x,y;

public int getX() {
return x;
}

public void setX(int x) {
this.x = x;
}

public int getY() {
return y;
}

public void setY(int y) {
this.y = y;
}

}

Class Triangle.java
package com.test;


public class Triangle {

private Point point1;
private Draw dr;

public Point getPoint1() {
return point1;
}

public void setPoint1(Point point1) {
this.point1 = point1;
}
public void show()
{
System.out.println("Ponit1 x="+point1.getX()+"y="+point1.getY());
dr.draw();
}

public Draw getDr() {
return dr;
}

public void setDr(Draw dr) {
this.dr = dr;
}
}

Class Draw.java

package com.test;

public class Draw {

public void draw()
{
System.out.println("Triangle Drawn");
}

}
Class BeanPostDisplay.java
package com.test;

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;

public class BeanPostDisplay implements BeanPostProcessor {

@Override
public Object postProcessAfterInitialization(Object obj, String bean)
throws BeansException {
System.out.println("Initialization is complete of "+bean);
return obj;
}

@Override
public Object postProcessBeforeInitialization(Object obj, String bean)
throws BeansException {
System.out.println("Initialization is Started of "+bean);
return obj;
}
}
Class Main.java
package com.test;

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

public class Main {

public static void main(String[] args) {

ApplicationContext context=new ClassPathXmlApplicationContext("spring.xml");
Triangle tri=(Triangle) context.getBean("triangle");
tri.show();
}

}

Spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
<bean id="point1" class="com.test.Point">
<property name="x" value="10"></property>
<property name="y" value="20"></property>
</bean>
<bean id="draw" class="com.test.Draw">
</bean>
<bean id="triangle" class="com.test.Triangle" autowire="autodetect">

</bean>
<bean class="com.test.BeanPostDisplay"></bean>
</beans>

Output is=
Initialization is Started of point1
Initialization is complete of point1
Initialization is Started of draw
Initialization is complete of draw
Initialization is Started of triangle
Initialization is complete of triangle
Ponit1 x=10y=20
Triangle Drawn


For Further Reading,
General, Java, spring

0 comments:

Post a Comment


 

Site Status

Man Behind Technical Today

Hello, I am Navin Bansal. I am a student of MCA in Rajsthan Institute of Engineering and Technology and owner of this blog. I share my view and ideas among people.