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.java
package 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