首页 > 其他分享 >Spring:简述一下bean的生命周期吧?

Spring:简述一下bean的生命周期吧?

时间:2023-03-10 20:12:54浏览次数:35  
标签:applicationContext 容器 Spring 简述 方法 bean 关闭 ioc

bean的生命周期是指它在ioc容器中从创建到销毁的整个过程。

 

<hr>

 

一、生命周期

  1、实例化,为对象分配内存。

  2、构造方法。

  3、属性注入,set注入。

  4、初始化方法

  5、业务操作

  6、销毁方法

二、初始化方法、销毁方法

  1、通过属性配置,类中的任意方法为初始化、销毁方法

    <!--配置类中的init方法为初始化方法,destroy方法为销毁方法-->
    <bean id="demoDao"  class="com.lurenjia.dao.DemoDao" init-method="init" destroy-method="destroy"></bean>

  2、通过实现接口,重写方法来指定

public class DemoDao implements InitializingBean , DisposableBean {
    @Override
    public void afterPropertiesSet() throws Exception {
        //在属性注入之后执行的初始化方法
    }
    @Override
    public void destroy() throws Exception {
        //销毁方法
    }
}

三、销毁方法执行条件

  只有在ioc容器正常关闭的时候,bean的销毁方法才会被执行。

在虚拟机关闭前关闭ioc容器:

  1、通过容器的close方法,暴力关闭

    在ApplicationContext的子接口ConfigurableApplicarionContext中提供了close方法。

        //获取到ioc容器对象
        ConfigurableApplicationContext applicationContext = new ClassPathXmlApplicationContext(
                "applicationContext.xml");
        //获取到bean对象
        DemoDao demoDao = applicationContext.getBean("demoDao",DemoDao.class);

        //暴力关闭ioc容器
        applicationContext.close();

  2、注册关闭钩子,让虚拟机关闭前先关闭ioc容器

    在ApplicationContext的子接口ConfigurableApplicarionContext中提供了注册方法。

        //获取到ioc容器对象
        ConfigurableApplicationContext applicationContext = new ClassPathXmlApplicationContext(
                "applicationContext.xml");
        //注册关闭钩子,虚拟机关闭前先关闭ioc容器
        applicationContext.registerShutdownHook();
        //获取到bean对象
        DemoDao demoDao = applicationContext.getBean("demoDao",DemoDao.class);

标签:applicationContext,容器,Spring,简述,方法,bean,关闭,ioc
From: https://www.cnblogs.com/lurenjia-bky/p/17204541.html

相关文章

  • SpringBoot 文件上传+拦截器
    SpringBoot文件上传+拦截器文件上传原理表单的enctype属性规定在发送到服务器之前应该如何对表单数据进行编码。当表单的enctype="application/x-www-form-urlencoded......
  • Spring:IOC容器创建Bean的方式有哪几种?
    三种:直接使用构造器、从静态工厂中拿、从实例工厂中拿。 一、直接使用构造器1、配置bean<beanclass="com.lurenjia.dao.DemoDao"id="demoDao"></bean>2、从......
  • Springcloud学习笔记56--SpringBoot之GET请求与Post请求参数偶发性丢失问题
    1.概述最近遇到一个偶现的问题,在向服务端请求的时候,偶尔会出现异常,在请求中的queryString传递了参数,却出现了异常MissingServletRequestParameterException如下所示:or......
  • Spring Bean Scope
    singleton默认情况,为每个SpringIoC容器将单个Bean定义的Scope扩大到单个对象实例。只有一个单例bean的共享实例被管理,所有对具有符合改bean定义的ID的bean的请求都会被s......
  • springboot 全局 Date参数接收 String格式 转换异常报错
    JSONparseerror:Cannotdeserializevalueoftype`java.util.Date`fromString\"2023-03-1010:00:00\":notavalidrepresentation(error:FailedtoparseDa......
  • Spring
    老版本的基础知识IoC:控制反转。类A引用类B,如果我们要更改类A引用类C,那么程序就要再测试,发布一次,浪费资源,因此我们可以不在类A中写上newB(),将对象放入Bean层中,需要的时候......
  • Spring-AOP工作流程
    Spring-AOP工作流程3,AOP工作流程3.1AOP工作流程由于AOP是基于Spring容器管理的bean做的增强,所以整个工作过程需要从Spring加载bean说起:流程1:Spring容器启动容器启......
  • IDEA利用maven配置Spring
    写在前面:此篇文章主要是记录IDEA利用maven配置Spring的全过程。由于本人也是慢慢探索出来的,所以有不全或者遗漏的地方,还请大家斧正。请耐心看完文章,前期工作做完后IDEA才可......
  • Spring-AOP简介&案例
    Spring-AOP简介&案例1,AOP简介Spring有两个核心的概念,一个是IOC/DI,一个是AOP。对于AOP,我们前面提过一句话是:AOP是在不改原有代码的前提下对其进行增强。1.1什么是AOP......
  • spring-boot-starter-* 和 *-spring-boot-starter的区别
    spring-boot-starter-*   和    *-spring-boot-starter的区别  答:一个是官方的命名,一个是非官方的命名,非官方的命名一般都是 第三方或者自己 开发的 start......