zoukankan      html  css  js  c++  java
  • 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 容器优雅关闭的方法。

  • 相关阅读:
    软工假期预习作业1
    2号团队-团队任务4:每日立会(汇总)
    2号团队-团队任务4:每日立会(2018-11-26)
    2号团队-团队任务4:每日立会(2018-11-27)
    第二小组首次会议记录
    第二次作业
    自我介绍+课后作业1:准备
    Linux安装redis
    Redis面试题
    Mybatis面试题
  • 原文地址:https://www.cnblogs.com/sanhuan/p/4788866.html
Copyright © 2011-2022 走看看