
void afterPropertiesSet() throws Exception
public class Triangle implements InitializingBean
{
@Override
public void afterPropertiesSet() throws Exception
{
//To do some initialization works here
System.out.println("InitializingBean init method is called for Triangle");
}
}
<bean class="com.dineshonjava.sdnext.callbackLifecycle.tutorial.Triangle" id="triangle" init-method="myInit"></bean>
public class Triangle
{
public void myInit()
{
//To do some initialization works here
System.out.println("My init method is called for Triangle");
}
}
public class Triangle
{
//init callback
@PostConstruct
public void myInit()
{
//To do some initialization works here
System.out.println("My init method is called for Triangle");
}
}
void destroy() throws Exception
public class Triangle implements DisposableBean
{
@Override
public void destroy() throws Exception
{
//To do some Destruction works here
System.out.println("DisposableBean destroy method is called for Triangle");
}
}
<bean class="com.dineshonjava.sdnext.callbackLifecycle.tutorial.Triangle" destroy-method="cleanUp" id="triangle"></bean>
public class Triangle
{
public void cleanUp()
{
//To do some Destruction works here
System.out.println("cleanUp method is called for Triangle");
}
}
public class Triangle
{
//destroy callback
@PreDestroy
public void myInit()
{
//To do some Destruction works here
System.out.println("cleanUp method is called for Triangle");
}
}
If you are using Spring's IoC container in a non-web application environment; for example, in a rich client desktop environment; you register a shutdown hook with the JVM. Doing so ensures a graceful shutdown and calls the relevant destroy methods on your singleton beans so that all resources are released.package com.dineshonjava.sdnext.callbackLifecycle.tutorial;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean;
public class Triangle implements InitializingBean, DisposableBean
{
private Point pointA;
private Point pointB;
private Point pointC;
/**
* @param pointA the pointA to set
*/
public void setPointA(Point pointA) {
this.pointA = pointA;
}
/**
* @param pointB the pointB to set
*/
public void setPointB(Point pointB) {
this.pointB = pointB;
}
/**
* @param pointC the pointC to set
*/
public void setPointC(Point pointC) {
this.pointC = pointC;
}
public void draw()
{
System.out.println("PointA is ("+pointA.getX()+", "+pointA.getY()+")");
System.out.println("PointB is ("+pointB.getX()+", "+pointB.getY()+")");
System.out.println("PointC is ("+pointC.getX()+", "+pointC.getY()+")");
}
@Override
public void afterPropertiesSet() throws Exception
{
System.out.println("InitializingBean init method is called for Triangle");
}
@Override
public void destroy() throws Exception
{
System.out.println("DisposableBean destroy method is called for Triangle");
}
public void myInit()
{
System.out.println("My init method is called for Triangle");
}
public void cleanUp()
{
System.out.println("cleanUp method is called for Triangle");
}
}
Point.javapackage com.dineshonjava.sdnext.callbackLifecycle.tutorial;
public class Point
{
private int x;
private int y;
/**
* @return the x
*/
public int getX() {
return x;
}
/**
* @param x the x to set
*/
public void setX(int x) {
this.x = x;
}
/**
* @return the y
*/
public int getY() {
return y;
}
/**
* @param y the y to set
*/
public void setY(int y) {
this.y = y;
}
}
<beans xmlns:aop="http://www.springframework.org/schema/aop" xmlns:p="http://www.springframework.org/schema/p" xmlns:security="http://www.springframework.org/schema/security" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xsi:schemalocation="http://www.springframework.org/schema/beans"> <bean autowire="byName" class="com.dineshonjava.sdnext.callbackLifecycle.tutorial.Triangle" destroy-method="cleanUp" id="triangle" init-method="myInit"> </bean> <bean class="com.dineshonjava.sdnext.callbackLifecycle.tutorial.Point" id="pointA"> <property name="x" value="0"></property> <property name="y" value="0"></property> </bean> <bean class="com.dineshonjava.sdnext.callbackLifecycle.tutorial.Point" id="pointB"> <property name="x" value="-20"></property> <property name="y" value="0"></property> </bean> <bean class="com.dineshonjava.sdnext.callbackLifecycle.tutorial.Point" id="pointC"> <property name="x" value="20"></property> <property name="y" value="0"></property> </bean> </beans>
package com.dineshonjava.sdnext.callbackLifecycle.tutorial;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
* @author Dinesh Rajput
*
*/
public class DrawingApp
{
/**
* @param args
*/
public static void main(String[] args)
{
AbstractApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
context.registerShutdownHook();
Triangle triangle = (Triangle) context.getBean("triangle");
triangle.draw();
}
}
<beans default-destroy-method="cleanUp" default-init-method="myInit" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:p="http://www.springframework.org/schema/p" xmlns:security="http://www.springframework.org/schema/security" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xsi:schemalocation="http://www.springframework.org/schema/beans"> <bean autowire="byName" class="com.dineshonjava.sdnext.callbackLifecycle.tutorial.Triangle" id="triangle"> </bean> <bean class="com.dineshonjava.sdnext.callbackLifecycle.tutorial.Point" id="pointA"> <property name="x" value="0"></property> <property name="y" value="0"></property> </bean> <bean class="com.dineshonjava.sdnext.callbackLifecycle.tutorial.Point" id="pointB"> <property name="x" value="-20"></property> <property name="y" value="0"></property> </bean> <bean class="com.dineshonjava.sdnext.callbackLifecycle.tutorial.Point" id="pointC"> <property name="x" value="20"></property> <property name="y" value="0"></property> </bean> </beans>
Labels: Spring3.0