zoukankan      html  css  js  c++  java
  • Bean的初始化和销毁

      在实际开发中我们可能会需要在Bean使用前和销毁前进行某些操作,Spring对Bean的生命周期的操作提供了支持,提供如下两种方式:

    (1)Java配置方式:

      在Java配置类中,使用@Bean注解显示声明Bean的时候,通过@Bean注解的initMethod和destroyMethod为Bean指定这两个阶段执行的函数。

    (2)注解方式:

      利用JSR-250提供的@PostConstrust和@PreDestroy注解。@PostConstruct注解标识函数在构造函数执行完之后执行。


    示例:

    (1)java配置方式

    ①Bean代码

    
    
    package learnspring.learnspring.initanddestroy;

    /**
    * @author 肖政宇
    * @date 2019-09-26 10:47
    * 说明:示例
    */
    public class DemoBean {
    public DemoBean() {
    System.out.println("创建Bean");
    }

    public void useBean() {
    System.out.println("Bean被使用");
    }

    public void initBean() {
    System.out.println("使用Bean之前");
    }

    public void destroyDean() {
    System.out.println("销毁Bean之前");
    }
    }
     

    ②java配置类代码

    package learnspring.learnspring.initanddestroy;

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

    /**
    * @author 肖政宇
    * @date 2019-09-26 10:49
    * 说明:java配置类
    */
    @Configuration
    public class DemoConfiguration {
    @Bean(initMethod = "initBean", destroyMethod = "destroyDean")
    DemoBean createBean() {
    return new DemoBean();
    }

    public static void main(String[] args) {
    AnnotationConfigApplicationContext context =
    new AnnotationConfigApplicationContext(DemoConfiguration.class);
    DemoBean demoBean = context.getBean(DemoBean.class);
    demoBean.useBean();
    context.close();
    }
    }

    ③运行结果


    (2)注解方式:

    ①Bean

    
    
    
    
    package learnspring.learnspring.initanddestroy;

    import org.springframework.stereotype.Component;

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

    /**
    * @author 肖政宇
    * @date 2019-09-26 10:47
    * 说明:示例
    */
    public class DemoBean {
    public DemoBean() {
    System.out.println("创建Bean");
    }

    public void useBean() {
    System.out.println("Bean被使用");
    }

    @PostConstruct
    public void initBean() {
    System.out.println("使用Bean之前");
    }

    @PreDestroy
    public void destroyDean() {
    System.out.println("销毁Bean之前");
    }
    }
    
    
    Java配置类以及运行结果和方法一一样。
  • 相关阅读:
    vue中 key 值的作用
    v-on可以监听多个方法吗?
    vue常用的修饰符
    v-if和v-show的区别
    Vue和其他框架的区别
    Vue面试题总结——目录
    vue是一个渐进式的框架,我是这么理解的
    原生JS封装创建多级菜单函数
    如何使用mongodb(建立原型,连接数据库)
    Hive 的安装与配置
  • 原文地址:https://www.cnblogs.com/XiaoZhengYu/p/11589777.html
Copyright © 2011-2022 走看看