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


  • 相关阅读:
    IOS开发——01_第一个OC程序
    01_iOS开发需要准备什么?
    正则表达式随笔
    .net4.6版本前设置window子窗口位置主窗口闪烁
    [CF1486D] Max Median
    [CF1487D] Pythagorean Triples
    [CF1487E] Cheap Dinner
    [CF1490E] Accidental Victory
    [CF1490F] Equalize the Array
    [CF1490G] Old Floppy Drive
  • 原文地址:https://www.cnblogs.com/kelelipeng/p/10213770.html
Copyright © 2011-2022 走看看