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销毁之前执行


  • 相关阅读:
    OK335x mksd.sh hacking
    Qt jsoncpp 对象拷贝、删除、函数调用 demo
    OK335xS 256M 512M nand flash make ubifs hacking
    Qt QScrollArea and layout in code
    JsonCpp Documentation
    Qt 4.8.5 jsoncpp lib
    Oracle数据库生成UUID
    freemarker得到数组的长度
    FreeMarker中if标签内的判断条件
    freemarker语法
  • 原文地址:https://www.cnblogs.com/kelelipeng/p/10213770.html
Copyright © 2011-2022 走看看