zoukankan      html  css  js  c++  java
  • 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销毁之前执行


  • 相关阅读:
    牛客IOI周赛17-提高组 卷积 生成函数 多项式求逆 数列通项公式
    6.3 省选模拟赛 Decompose 动态dp 树链剖分 set
    AtCoder Grand Contest 044 A Pay to Win 贪心
    5.29 省选模拟赛 树的染色 dp 最优性优化
    luogu P6097 子集卷积 FST FWT
    CF724C Ray Tracing 扩展欧几里得 平面展开
    5.30 省选模拟赛 方格操作 扫描线 特殊性质
    5.29 省选模拟赛 波波老师 SAM 线段树 单调队列 并查集
    Spring main方法中怎么调用Dao层和Service层的方法
    Bug -- WebService报错(两个类具有相同的 XML 类型名称 "{http://webService.com/}getPriceResponse"。请使用 @XmlType.name 和 @XmlType.namespace 为类分配不同的名称。)
  • 原文地址:https://www.cnblogs.com/kelelipeng/p/10213770.html
Copyright © 2011-2022 走看看