Spring中bean注入前后的一些操作:

简介:

InitializingBean 和 DisposableBean

init-method 和 destroy-method

@PostConstruct 和 @PreDestroy

In Spring, InitializingBean and DisposableBean are two marker interfaces, a useful way for Spring to perform certain actions upon bean initialization and destruction.

  1. For bean implemented InitializingBean, it will run afterPropertiesSet() after all bean properties have been set.
  2. For bean implemented DisposableBean, it will run destroy() after Spring container is released the bean.

In Spring, you can use init-method and destroy-method as attribute in bean configuration file for bean to perform certain actions upon initialization and destruction.

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

具体的使用

对于第一个:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import  org.springframework.beans.factory.DisposableBean;
import  org.springframework.beans.factory.InitializingBean;
  
public  class  CustomerService  implements  InitializingBean, DisposableBean
{
     String message;
  
     public  String getMessage() {
       return  message;
     }
  
     public  void  setMessage(String message) {
       this .message = message;
     }
  
     public  void  afterPropertiesSet()  throws  Exception {
       System.out.println( "Init method after properties are set : "  + message);
     }
  
     public  void  destroy()  throws  Exception {
       System.out.println( "Spring Container is destroy! Customer clean up" );
     }
  
}

  下面的例子展示了 init-method and destroy-method.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public  class  CustomerService
{
     String message;
  
     public  String getMessage() {
       return  message;
     }
  
     public  void  setMessage(String message) {
       this .message = message;
     }
  
     public  void  initIt()  throws  Exception {
       System.out.println( "Init method after properties are set : "  + message);
     }
  
     public  void  cleanUp()  throws  Exception {
       System.out.println( "Spring Container is destroy! Customer clean up" );
     }
  
}

  

1
2
3
4
5
6
7
8
9
10
11
12
     xsi:schemaLocation="http://www.springframework.org/schema/beans
  
     < bean  id="customerService" class="com.mkyong.customer.services.CustomerService"
         init-method="initIt" destroy-method="cleanUp">
  
         < property  name="message" value="i'm property message" />
     </ bean >
  
</ beans >

  第三种的使用:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
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

1
2
3
4
5
6
7
8
9
10
11
12
     xsi:schemaLocation="http://www.springframework.org/schema/beans
  
     < bean  class="org.springframework.context.annotation.CommonAnnotationBeanPostProcessor" />
  
     < bean  id="customerService" class="com.mkyong.customer.services.CustomerService">
         < property  name="message" value="i'm property message" />
     </ bean >
  
</ beans >

  

2. <context:annotation-config />

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
     xsi:schemaLocation="http://www.springframework.org/schema/beans
  
     < context:annotation-config  />
  
     < bean  id="customerService" class="com.mkyong.customer.services.CustomerService">
         < property  name="message" value="i'm property message" />
     </ bean >
  
</ beans >

  

目录
相关文章
|
5月前
|
Java 开发者 Spring
解析Spring中Bean的生命周期
解析Spring中Bean的生命周期
58 2
|
6月前
|
缓存 Java Spring
Spring 框架中 Bean 的生命周期
Spring 框架中 Bean 的生命周期
73 1
|
5月前
|
XML druid Java
Spring5系列学习文章分享---第二篇(IOC的bean管理factory+Bean作用域与生命周期+自动装配+基于注解管理+外部属性管理之druid)
Spring5系列学习文章分享---第二篇(IOC的bean管理factory+Bean作用域与生命周期+自动装配+基于注解管理+外部属性管理之druid)
62 0
|
1月前
|
Java 开发者 Spring
Spring bean的生命周期详解!
本文详细解析Spring Bean的生命周期及其核心概念,并深入源码分析。Spring Bean是Spring框架的核心,由容器管理其生命周期。从实例化到销毁,共经历十个阶段,包括属性赋值、接口回调、初始化及销毁等。通过剖析`BeanFactory`、`ApplicationContext`等关键接口与类,帮助你深入了解Spring Bean的管理机制。希望本文能助你更好地掌握Spring Bean生命周期。
89 1
|
1月前
|
Java 开发者 Spring
Spring bean的生命周期详解!
本文详细介绍了Spring框架中的核心概念——Spring Bean的生命周期,包括实例化、属性赋值、接口回调、初始化、使用及销毁等10个阶段,并深入剖析了相关源码,如`BeanFactory`、`DefaultListableBeanFactory`和`BeanPostProcessor`等关键类与接口。通过理解这些核心组件,读者可以更好地掌握Spring Bean的管理和控制机制。
90 1
|
4月前
|
Java Spring 容器
Spring Boot 启动源码解析结合Spring Bean生命周期分析
Spring Boot 启动源码解析结合Spring Bean生命周期分析
107 11
|
3月前
|
前端开发 Java 开发者
|
3月前
|
Java Spring
Spring的Bean生命周期中@PostConstruct注解
【8月更文挑战第3天】在Spring框架中,`@PostConstruct`注解标示Bean初始化完成后立即执行的方法。它在依赖注入完成后调用,适用于资源加载、属性设置等初始化操作。若方法中抛出异常,可能影响Bean初始化。与之对应,`@PreDestroy`注解的方法则在Bean销毁前执行,用于资源释放。
147 0
|
6月前
|
Java Spring 容器
Spring注解开发,bean的作用范围及生命周期、Spring注解开发依赖注入
Spring注解开发,bean的作用范围及生命周期、Spring注解开发依赖注入
63 1
Spring注解开发,bean的作用范围及生命周期、Spring注解开发依赖注入
|
5月前
|
Java 开发者 Spring
Spring 中 Bean 的生命周期
Spring 中 Bean 的生命周期
43 2
下一篇
无影云桌面