• spring的 init-method和 destory-method方法


    关于在spring  容器初始化 bean 和销毁前所做的操作定义方式有三种:

    第一种:通过@PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作

    第二种是:通过 在xml中定义init-method 和  destory-method方法

    第三种是: 通过bean实现InitializingBean和 DisposableBean接口

    在xml中配置 init-method和 destory-method方法

    只是定义spring 容器在初始化bean 和容器销毁之前的所做的操作

    基于xml的配置只是一种方式:

    直接上xml中配置文件:

    [html] view plaincopy
     
    1. <bean id="personService" class="com.myapp.core.beanscope.PersonService" scope="singleton"  init-method="init"  destroy-method="cleanUp">  
    2.   
    3. </bean>  

    定义PersonService类:

    [java] view plaincopy
     
    1. package com.myapp.core.beanscope;  
    2.   
    3.   
    4. public class PersonService  {  
    5.    private String  message;  
    6.   
    7.     public String getMessage() {  
    8.         return message;  
    9.     }  
    10.       
    11.     public void setMessage(String message) {  
    12.         this.message = message;  
    13.     }  
    14.      
    15.   
    16.       
    17.     public void init(){  
    18.         System.out.println("init");  
    19.     }  
    20.     //  how  validate the  destory method is  a question  
    21.     public void  cleanUp(){  
    22.         System.out.println("cleanUp");  
    23.     }  
    24. }  


    相应的测试类:

    [java] view plaincopy
     
    1. package com.myapp.core.beanscope;  
    2.   
    3. import org.springframework.context.support.AbstractApplicationContext;  
    4. import org.springframework.context.support.ClassPathXmlApplicationContext;  
    5.   
    6. public class MainTest {  
    7.   public static void main(String[] args) {  
    8.         
    9.       AbstractApplicationContext  context =new  ClassPathXmlApplicationContext("SpringBeans.xml");  
    10.       
    11.     PersonService  person = (PersonService)context.getBean("personService");  
    12.       
    13.     person.setMessage("hello  spring");  
    14.       
    15.     PersonService  person_new = (PersonService)context.getBean("personService");  
    16.       
    17.     System.out.println(person.getMessage());  
    18.     System.out.println(person_new.getMessage());  
    19.     context.registerShutdownHook();  
    20.   
    21.       
    22. }  
    23. }   


    测试结果:

    init
    hello  spring
    hello  spring
    cleanUp

    可以看出 init 方法和 clean up方法都已经执行了。

    context.registerShutdownHook(); 是一个钩子方法,当jvm关闭退出的时候会调用这个钩子方法,在设计模式之 模板模式中 通过在抽象类中定义这样的钩子方法由实现类进行实现,这里的实现类是AbstractApplicationContext,这是spring 容器优雅关闭的方法。

  • 相关阅读:
    事务
    数据库三大范式
    jdbc
    Jdbc事务
    Android 学习笔记2开发软件的常识&搭建开发环境(windows7)
    2011年起航
    Android 学习笔记3Android 工程目录介绍&程序执行过程
    我的第一篇日志基于AT89S52的单片机的LED点阵显示屏的设计
    算法基础之快速排序
    LeetCode88.合并两个有序数组
  • 原文地址:https://www.cnblogs.com/sanhuan/p/4788866.html
Copyright © 2020-2023  润新知