首页 > 其他分享 >Spring的Bean的生命周期,初始化和销毁bean的方法

Spring的Bean的生命周期,初始化和销毁bean的方法

时间:2022-10-16 17:22:43浏览次数:43  
标签:xml Spring init Bean bean context destroy public

本文以xml配置的方式来记录Spring的初始化和销毁bean的方法.

Java Bean:

package com.oxygen.dao.impl;

import com.oxygen.dao.BookDao;

public class BookDaoImpl implements BookDao {
    public void save() {
        System.out.println("Book Dao Save...");
    }
    public void init(){
        System.out.println("BookDaoImpl init...");
    }

    public void destroy(){
        System.out.println("BookDaoImpl destroy...");
    }
}

注意BookDaoImpl这个java类中的init()和destroy()方法,这两个方法是自己写的.

 

xml配置:告诉spring容器,谁是初始化方法,谁是销毁bean的方法

<bean id="bookDao" class="com.oxygen.dao.impl.BookDaoImpl" init-method="init" destroy-method="destroy"/>

 

测试类:

package com.oxygen;

import com.oxygen.dao.BookDao;
import com.oxygen.dao.OrderDao;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class App2 {
    public static void main(String[] args) {
        ClassPathXmlApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
        BookDao bookDao = (BookDao) context.getBean("bookDao");
        bookDao.save();
        context.close();
    }
}

注意:

上面的测试类用的是ClassPathXmlApplicationContext这个对象,而不是ApplicationContext。

在xml文件配置之后,初始化方法init()就会自动运行.

在xml文件配置之后,销毁bean的方法destroy()不会自动运行。

要想destory一个java bean对象有两者方式;

1.关闭spring容器:context.close();

context.close();

 

2.给Spring容器注册一个钩子:

context.registerShutdownHook();

 

无论init()和destroy()或者registerShutdownHook()的位置在哪里,init都会save()先执行.

destroy()或者registerShutdownHook()都会在save()方法执行完成之后执行。

标签:xml,Spring,init,Bean,bean,context,destroy,public
From: https://www.cnblogs.com/majestyking/p/16796601.html

相关文章

  • 【10】Spring源码-分析篇-AOP源码分析
    Spring源码-AOP分析一、手写AOP回顾  本文我们开始讲解Spring中的AOP原理和源码,我们前面手写了AOP的实现,了解和自己实现AOP应该要具备的内容,我们先回顾下,这对我们理解Spri......
  • SpringMVC执行流程
    SpringMVC的组件DispatcherServlet:前端控制器,接受所有请求,调用其他组件。HandlerMapping:处理器映射器,根据配置找到方法的执行链。HandlerAdapter:处理器适配器,根据方法类型找......
  • SpringBoot自动装配的使用
    1.模板组件企业开发中,往往将常见工具类封装抽取,以简洁便利的方式供其他工程模块使用。而SpringBoot的自动装配机制可以方便的实现组件抽取。SpringBoot执行流程如下扫描依赖......
  • 将 Bean 放入 Spring 容器中的五种方式
    文章目录​​1.@Configuration+@Bean​​​​2.@Componet+@ComponentScan​​​​3.@Import注解导入​​​​3.1@Import直接导入类​​​​3.2@Import+ImportSelect......
  • Spring的FactoryBean
    Spring框架创建Javabean有三种方法无参构造方法静态工厂实例工厂Spring里面的FactoryBean是对实例工厂的优化和增强。本文展示Spring框架的FactoryBean接口的使用......
  • SpringBoot 扩展性接口
    1.可扩展的接口启动调用顺序图​​org.springframework.beans.factory.xxx​​​​org.springframework.boot.xxx​​​​org.springframework.context.xxx​​ApplicationC......
  • Springboot 服务停止后执行方法
    importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;importorg.springframework.beans.factory.DisposableBean;importorg.springframework.context.annotatio......
  • SpringBoot整合ES查询
    springboot整个es有很多钟方法,比如TransportClient、RestClient、RestHighLevelClient、SpringData-Es、Elasticsearch-SQL等。ElasticSearch官方提供了3个Client,具体......
  • Spring Cloud Nacos(一)
    PropertySourceLocator加载原理SpringApplication.run在springboot项目启动时,有一个prepareContext的方法,它会回调所有实现了ApplicationContextInitializer的实例,来做......
  • Spring boot JDBC
    引入包 yml配置      @Repository表求该类是持久层依赖注入的对象    queryForObject查询单一一条记录。query查询多条记录  服务后端......