现在的位置: 首页 > 综合 > 正文

Spring BeanPostProcessor类 (在Spring实例化bean的前后执行一些附加操作)

2013年09月21日 ⁄ 综合 ⁄ 共 1663字 ⁄ 字号 评论关闭

在Spring实例化bean的前后执行一些附加操作。 

有时,你会发现需要立刻在Spring实例化一个bean的前后执行一些附件操作。这些操作可以简单到修改一个bean,也可以复杂到返回一个完全不同的对象。 
BeanPostProcessor接口包含两个方法: 
postProcessBeforeInitialization:在Spring调用任何bean的初始化钩子(例如InitializingBean.afterPropertiesSet或者init方法)之前被调用。 
postProcessAfterInitialization:Spring在成功完成嵌入初始化以后调用他。 

例子1: 
我们声明了一个实现了BeanPostProcessor接口的类InitDestroyAnnotationBeanPostProcessor,这个类支持声明式的指定注解规则(默认为JSR 250注解) 

  1. public class SimpleBean
    {  
  2.   
  3.     @PostConstruct  
  4.     public void initialize()
    {  
  5.         System.out.println("Initializing
    bean "
     +
    getClass());  
  6.     }  
  7.   
  8.     @PreDestroy  
  9.     public void cleanUp()
    {  
  10.         System.out.println("Cleaning
    up bean "
     +
    getClass());  
  11.     }  
  12.   
  13. }  

配置:

  1. <?xml
    version=
    "1.0" encoding="UTF-8"?>  
  2. <beans
    xmlns="http://www.springframework.org/schema/beans"  
  3.       
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.       
    xsi:schemaLocation="  
  5.                 http://www.springframework.org/schema/beans  
  6.                 http://www.springframework.org/schema/beans/spring-beans.xsd">  
  7.       
  8.     <bean
    id="simpleBean" class="com.apress.prospring2.ch04.bpp.SimpleBean"/>  
  9.     <bean
    id="bpp" class="org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor">  
  10.         <property
    name="initAnnotationType" value="javax.annotation.PostConstruct"/>  
  11.         <property
    name="destroyAnnotationType" value="javax.annotation.PreDestroy"/>  
  12.     </bean>  
  13.   
  14. </beans>  

调用: 

  1. public class SimpleBeanDemo
    {  
  2.   
  3.     public static void main(String[]
    args) {  
  4.         ConfigurableListableBeanFactory
    beanFactory = new XmlBeanFactory(  
  5.                 new ClassPathResource(
【上篇】
【下篇】

抱歉!评论已关闭.