zoukankan      html  css  js  c++  java
  • Spring回调方法DisposableBean接口

    除了自定义的destroy-method.还可以实现DisposableBean接口,来回调bean销毁时候执行的方法,这个接口有一个destroy方法,生命周期是是destroy----bean销毁---自定义的destroy方法 

    SimpleBean.java

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    package ch5.destroy;
    import org.springframework.beans.factory.DisposableBean;
    import org.springframework.beans.factory.InitializingBean;
    public class SimpleBean implements InitializingBean,DisposableBean {
      public void afterPropertiesSet() throws Exception {
            System.out.println("this is info from afterpropertiesSet from SimpleBean");
        }
    private  String name;
      private String sex;
      private String age;
      public void destroyMethod(){
          System.out.println("this is info from customer destroy method");
      }
      public void destroy(){
          System.out.println("this is info from destroy method");
      }
    public String getAge() {
        return age;
    }
    public void setAge(String age) {
        this.age = age;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    }

    配置文件:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    <?xml version="1.0" encoding="UTF-8"?>
    <beans
        xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
    <bean id="SimpleBean" class="ch5.destroy.SimpleBean" destroy-method="destroyMethod">
    <property name="name">
        <value>gaoxiang</value>
      </property>
    <property name="sex">
       <value>male</value>
    </property>
    <property name="age">
        <value>26</value>
      </property>
    </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
    27
    28
    29
    30
    31
    32
    package ch5.destroy;
    import java.io.File;
    import org.springframework.beans.factory.BeanFactory;
    import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
    import org.springframework.beans.factory.support.BeanDefinitionRegistry;
    import org.springframework.beans.factory.xml.XmlBeanFactory;
    import org.springframework.core.io.FileSystemResource;
    public class TestSpring{
      public static void main(String args[])  throws Exception{
          //获取bean factory
          ConfigurableListableBeanFactory factory=(ConfigurableListableBeanFactory)getBeanFactory();  //使用子beanFactory
       
          SimpleBean bean1=(SimpleBean)factory.getBean("SimpleBean");
           
          System.out.println("before destroy");
          factory.destroySingletons();
          System.out.println("after destory");
         
      }
      public static BeanFactory getBeanFactory(){
          //获取bean factory
          String realpath="";
        
             //加载配置项
          realpath=System.getProperty("user.dir")+File.separator+"src"+File.separator+"ch5/destroy"+File.separator+"applicationContext.xml";
       
          
          ConfigurableListableBeanFactory  factory=new XmlBeanFactory(new FileSystemResource(realpath));
           
          return factory;
      }
    }
     

    结果:

    this is info from afterpropertiesSet from SimpleBean
    before destroy
    this is info from destroy method
    this is info from customer destroy method
    after destory

     原文地址:http://blog.csdn.net/daryl715/article/details/1678986

  • 相关阅读:
    模板方法设计模式
    单一职责原则
    开闭原则
    uml
    迭代器模式
    观察者模式
    工厂模式
    代理模式
    idea本地Maven仓库不能下载依赖jar包的解决方案
    selenium 使用教程详解-java版本
  • 原文地址:https://www.cnblogs.com/langtianya/p/5013213.html
Copyright © 2011-2022 走看看