Java Techies- Solution for All
Spring @PostContruct and @PreDestroy Example
The @PostConstruct and @PreDestroy annotation are J2ee specific, lies in common-annotations.jar.
Customer.java File
package com.jtechies; import javax.annotation.PostConstruct; import javax.annotation.PreDestroy; public class Customer { private String message; public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } @PostConstruct public void init()throws Exception{ System.out.println("Inside Init() method..."); } @PreDestroy public void destroy()throws Exception{ System.out.println("Inside Destroy() method..."); } }
Test.java File
package com.jtechies.test; import org.springframework.context .ConfigurableApplicationContext; import org.springframework.context.support. ClassPathXmlApplicationContext; import com.jtechies.Customer; public class Test { public static void main(String[] args) { ConfigurableApplicationContext context = new ClassPathXmlApplicationContext("spring.xml"); Customer customer = (Customer) context.getBean("customer"); System.out.println(customer.getMessage()); context.close(); } }
spring.xml File
To enable @PostConstruct and @PreDestroy annotation, you have to either register 'CommonAnnotationBeanPostProcessor' or specify the '<context:annotation-config />' in bean configuration 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" xmlns:context= "http://www.springframework.org/schema/context" xsi:schemaLocation= "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <context:annotation-config/> <bean id="customer" class="com.jtechies.Customer"> <property name="message" value="Hi i am a customer"/> </bean> </beans>
Output
Inside Init() method... Hi i am a customer Inside Destroy() method...The init() method is called, after the message property is set, and the destroy() method is call after the context.close();