博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring @PostConstruct and @PreDestroy example
阅读量:6843 次
发布时间:2019-06-26

本文共 2700 字,大约阅读时间需要 9 分钟。

In Spring, you can either implements InitializingBean and DisposableBean interface or specify the init-method and destroy-method in bean configuration file for the initialization and destruction callback function. In this article, we show you how to use annotation @PostConstruct and @PreDestroy to do the same thing.

Note

The @PostConstruct and @PreDestroy annotation are not belong to Spring, it’s located in the J2ee library – common-annotations.jar.

@PostConstruct and @PreDestroy

A CustomerService bean with @PostConstruct and @PreDestroy annotation

package com.mkyong.customer.services;import javax.annotation.PostConstruct;import javax.annotation.PreDestroy;public class CustomerService{    String message;        public String getMessage() {      return message;    }    public void setMessage(String message) {      this.message = message;    }        @PostConstruct    public void initIt() throws Exception {      System.out.println("Init method after properties are set : " + message);    }        @PreDestroy    public void cleanUp() throws Exception {      System.out.println("Spring Container is destroy! Customer clean up");    }    }

By default, Spring will not aware of the @PostConstruct and @PreDestroy annotation. To enable it, you have to either register ‘CommonAnnotationBeanPostProcessor‘ or specify the ‘<context:annotation-config />‘ in bean configuration file,

1. CommonAnnotationBeanPostProcessor

2. <context:annotation-config />

Run it

package com.mkyong.common;import org.springframework.context.ConfigurableApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.mkyong.customer.services.CustomerService;public class App {    public static void main( String[] args )    {        ConfigurableApplicationContext context =           new ClassPathXmlApplicationContext(new String[] {"Spring-Customer.xml"});            CustomerService cust = (CustomerService)context.getBean("customerService");                System.out.println(cust);                context.close();    }}

Output

Init method after properties are set : im property messagecom.mkyong.customer.services.CustomerService@47393f...INFO: Destroying singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@77158a: defining beans [customerService]; root of factory hierarchySpring Container is destroy! Customer clean up

The initIt() method (@PostConstruct) is called, after the message property is set, and the cleanUp() method (@PreDestroy) is call after the context.close();

转载于:https://www.cnblogs.com/ghgyj/p/4748838.html

你可能感兴趣的文章