• spring boot之 Bean的初始化和销毁(4)


    原文:https://blog.csdn.net/z3133464733/article/details/79189699 

    ------------------------------------------------------------------------------------------------------------------------------------------

    Spring @PostConstruct和@PreDestroy实例
    https://www.cnblogs.com/soundcode/p/6367416.html

    Spring Bean InitializingBean和DisposableBean实例
    https://www.cnblogs.com/soundcode/p/6367410.html

    Spring中的初始化InitializingBean接口和DisposableBean接口
    https://blog.csdn.net/chenwiehuang/article/details/52594074

    ------------------------------------------------------------------------------------------------------------------------------------------

    1.java形式的配置方式:使用@bean的initMethod和destorymethod等同于init-method、destory-method

    java--Bean(还未交给spring管理)

    package com.zh.ch2.prepost;
    /**
    * Bean的初始化和销毁
    * 1.java形式的配置方式:使用@bean的initMethod和destorymethod等同于init-method、destory-method
    * 2.注解方式:利用-250的@PostConstruct和@PreDestory
    * @author Hiiso
    *
    */
    public class BeanWayService {
    public void init(){
    System.out.println("@Bean-init-method//1在构造函数执行完之后执行");
    }
    public BeanWayService() {
    super();
    System.out.println("初始化构造函数-BeanWayService");
    }
    public void destroy(){
    System.out.println("@Bean-destory-method//2在bean销毁之前执行");
    }
    }
    2.注解方式:利用-250的@PostConstruct和@PreDestory
    java--Bean(还未交给spring管理)

    package com.zh.ch2.prepost;

    import javax.annotation.PostConstruct;
    import javax.annotation.PreDestroy;

    public class JSR250WayService {
    @PostConstruct //1在构造函数执行完之后执行
    public void init(){
    System.out.println("jsr250-init-method//1在构造函数执行完之后执行");
    }
    public JSR250WayService() {
    super();
    System.out.println("初始化构造函数-JSR250WayService");
    }
    @PreDestroy //2在bean销毁之前执行
    public void destroy(){
    System.out.println("jsr250-destory-method//2在bean销毁之前执行");
    }

    }
    将bean 交由spring 管理
    package com.zh.ch2.prepost;

    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.ComponentScan;
    import org.springframework.context.annotation.Configuration;

    @Configuration
    @ComponentScan("com.zh.ch1.prepost")
    public class PrePostConfig {

    @Bean(initMethod="init",destroyMethod="destroy") //1
    BeanWayService beanWayService(){
    return new BeanWayService();
    }

    @Bean
    JSR250WayService jsr250WayService(){
    return new JSR250WayService();
    }

    }
    测试:

    package com.zh.ch2.prepost;

    import org.springframework.context.annotation.AnnotationConfigApplicationContext;

    public class Main {

    public static void main(String[] args) {
    AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(PrePostConfig.class);
    context.close();
    }

    }
    结果:(1-6为执行顺序)
    1.初始化构造函数-BeanWayService

    2.@Bean-init-method//1在构造函数执行完之后执行

    3.初始化构造函数-JSR250WayService

    4.jsr250-init-method//1在构造函数执行完之后执行

    5.jsr250-destory-method//2在bean销毁之前执行

    6.@Bean-destory-method//2在bean销毁之前执行


  • 相关阅读:
    计算机科学中最重要的32个算法
    趣事
    深度学习迷你地图
    物理学
    代数几何
    Node.js 文件系统
    Node.js 常用工具util包
    Node.js 全局对象
    favi.icon是什么?
    Node.js 路由
  • 原文地址:https://www.cnblogs.com/kelelipeng/p/10213770.html
Copyright © 2020-2023  润新知