• Spring bean初始化与销毁的几种方式和区别


    1. <bean> 元素的 init-method/destroy-method属性指定初始化之后 /销毁之前调用的操作方法

    2. 指定方法上加上@PostConstruct 或@PreDestroy注解来制定该方法是在初始化之后还是销毁之前调用

    3. 通过实现 InitializingBean/DisposableBean 接口来定制初始化之后/销毁之前的操作方法

    初始化

    package com.*.*.service;
    
    import org.springframework.beans.factory.InitializingBean;
    
    import javax.annotation.PostConstruct;
    
    /**
     * @author dhm
     * @desc
     * @date 2017/11/27
     */
    
    public class TestService implements InitializingBean {
        public TestService(){
            System.out.println("构造方法");
        }
    
    
        @Override
        public void afterPropertiesSet() throws Exception {
            System.out.println("重写InitializingBean的afterPropertiesSet()方法");
        }
    
        public void initMethod(){
            System.out.println("initMethod方法");
        }
    
        @PostConstruct
        public void initByPostConstruct(){
            System.out.println("PostConstruct初始化方法");
        }
    }
    <bean class="com.*.*.service.TestService" init-method="initMethod"/>

    测试结果 :

    构造方法
    PostConstruct初始化方法
    重写InitializingBean的afterPropertiesSet()方法
    initMethod方法方法

    销毁

    package com.*.*.service;
    
    import org.springframework.beans.factory.DisposableBean;
    
    import javax.annotation.PreDestroy;
    
    /**
     * @author dhm
     * @desc
     * @date 2017/11/27
     */
    
    public class TestService implements DisposableBean {
        public void destroyMethod(){
            System.out.println("destroyMethod方法");
        }
    
        @PreDestroy
        public void destroyByPreDestroy(){
            System.out.println("PreDestroy销毁前方法");
        }
    
        @Override
        public void destroy() throws Exception {
            System.out.println("重写DisposableBean的destroy方法");
        }
    }
    <bean class="com.*.*.service.TestService" destroy-method="destroyMethod"/>

    测试结果:

    PreDestroy销毁前方法
    重写DisposableBean的destroy方法
    destroyMethod方法

  • 相关阅读:
    c++的socket编程 tcp
    qt下载
    定义数组类型
    虚析构函数
    运算符重载
    友元函数
    const成员函数
    静态成员变量,静态成员函数
    linux安装mysql
    智能指针
  • 原文地址:https://www.cnblogs.com/duanhm234/p/7921533.html
Copyright © 2020-2023  润新知