iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >JavaSpringBean的生命周期管理详解
  • 260
分享到

JavaSpringBean的生命周期管理详解

2024-04-02 19:04:59 260人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录spring Bean的生命周期管理一、Spring Bean的生命周期二、通过@Bean的参数(initMethod ,destroyMethod)指定Bean的初始化和销毁方

Spring Bean的生命周期管理

一、Spring Bean的生命周期


通过以下方式来指定Bean的初始化和销毁方法,
当Bean为单例时,Bean归Spring容器管理,Spring容器关闭,就会调用Bean的销毁方法
当Bean为多例时,Bean不归Spring容器管理,Spring容器关闭,不会调用Bean的销毁方法

二、通过@Bean的参数(initMethod ,destroyMethod)指定Bean的初始化和销毁方法

1、项目结构

2、Person


public class Person {
    public Person(){
        System.out.println("Person 创建了...");
    }
    public void init(){
        System.out.println("Person 初始化了...");
    }
    public void destroy(){
        System.out.println("Person 被销毁了...");
    }
}

3、Bean注册配置类(单实例)


import com.dashu.bean.Person;
import org.springframework.context.annotation.*;
@Configuration
public class BeanConfig {
    @Bean(initMethod = "init",destroyMethod = "destroy")
    public Person person(){
        return new Person();
    }
}

4、测试类


import com.dashu.bean.Person;
import com.dashu.config.BeanConfig;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class Main {
    public static void main(String[] args) {
        //加载配置类获取容器
        AnnotationConfigApplicationContext annotationConfigApplicationContext = new AnnotationConfigApplicationContext(BeanConfig.class);
        //获取Bean
        Person bean = annotationConfigApplicationContext.getBean(Person.class);
        //关闭容器
        annotationConfigApplicationContext.close();
    }
}

5、测试结果

6、Bean注册配置类(多实例)


import com.dashu.bean.Person;
import org.springframework.context.annotation.*;
@Configuration
public class BeanConfig {
    @Scope("prototype")
    @Bean(initMethod = "init",destroyMethod = "destroy")
    public Person person(){
        return new Person();
    }
}

7、测试结果

三、Bean实现接口InitializingBean, DisposableBean

1、Person


import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean;
public class Person implements InitializingBean, DisposableBean {
    public Person(){
        System.out.println("Person 创建了...");
    }
    @Override
    public void afterPropertiesSet() throws Exception {
        System.out.println("Person 初始化了...");
    }
    @Override
    public void destroy() throws Exception {
        System.out.println("Person 被销毁了...");
    }
}

2、Bean注册配置类


import com.dashu.bean.Person;
import org.springframework.context.annotation.*;
@Configuration
public class BeanConfig {
    @Bean
    public Person person(){
        return new Person();
    }
}

3、测试结果

四、通过注解@PostConstruct和@PreDestroy


@PostConstruct:标注在Bean的初始化方法上
@PreDestroy:标注在Bean的销毁方法上

1、Person


import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
public class Person {
    public Person(){
        System.out.println("Person 创建了...");
    }
    @PostConstruct
    public void init(){
        System.out.println("Person 初始化了...");
    }
    @PreDestroy
    public void destroy(){
        System.out.println("Person 被销毁了...");
    }
}

2、测试结果

五、使用接口BeanPostProcessor实现类(后置处理器)

1、项目结构

2、Person


import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
@Component
public class Person {
    public Person(){
        System.out.println("Person 创建了...");
    }
    @PostConstruct
    public void init(){
        System.out.println("Person 初始化了...");
    }
    @PreDestroy
    public void destroy(){
        System.out.println("Person 被销毁了...");
    }
}

3、Bean注册配置类


import org.springframework.context.annotation.*;
@Configuration
@ComponentScan({"com.dashu"})
public class BeanConfig {
}

4、BeanPostProcessor实现类(后置处理器)


import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;
import org.springframework.beans.factory.config.InstantiationAwareBeanPostProcessor;
import org.springframework.lang.Nullable;
import org.springframework.stereotype.Component;

@Component
public class MyBeanPostProcessor implements BeanPostProcessor {
    
    @Override
    public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
        System.out.println("初始化之前..."+beanName+"=["+bean+"]");
        return bean;
    }
    
    @Override
    public  Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
        System.out.println("初始化之后..."+beanName+"=["+bean+"]");
        return bean;
    }
}

5、测试结果

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注编程网的更多内容!

--结束END--

本文标题: JavaSpringBean的生命周期管理详解

本文链接: https://www.lsjlt.com/news/160664.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • JavaSpringBean的生命周期管理详解
    目录Spring Bean的生命周期管理一、Spring Bean的生命周期二、通过@Bean的参数(initMethod ,destroyMethod)指定Bean的初始化和销毁方...
    99+
    2022-11-12
  • Vue生命周期详解
    这篇博客将会从下面四个常见的应用诠释组件的生命周期,以及各个生命周期应该干什么事 单组件的生命周期父子组件的生命周期兄弟组件的生命周期宏mixin的生命周期 生命周期:Vue 实例从...
    99+
    2022-11-13
  • rust生命周期详解
    目录rust生命周期借用检查函数中的生命周期手动声明生命周期结构体中的生命周期生命周期消除三条消除原则生命周期约束静态生命周期rust生命周期 生命周期是rust中用来规定引用的有效...
    99+
    2023-03-19
    rust生命周期
  • 详解vue生命周期
    目录为什么要理解生命周期什么是生命周期生命周期钩子函数created和mounted钩子的一些实战用法1.异步函数 2.Vue.nextTick对异步函数的结果进行操作 总结为什么要...
    99+
    2022-11-12
  • React的生命周期详解
    一、React生命周期 React 生命周期分为三种状态 1. 初始化2.更新3.销毁 初始化 1、getDefaultProps() 设置默认的props,也可以用dufault...
    99+
    2022-11-13
  • 详解uniapp的生命周期
    Uniapp作为一款跨平台应用开发框架,具有丰富的生命周期,以下是Uniapp的生命周期: 1.应用生命周期 应用生命周期是指应用程序从启动到关闭的整个过程,包括应用程序的启动、前后...
    99+
    2023-05-17
    vue uniapp uniapp生命周期
  • 《Android》Activity生命周期详解
    1、什么是Activity的生命周期? 用户在使用一个应用程序时,随着应用的启动、页面的跳转、进入后台等一些操作的发生,Activity会回调一...
    99+
    2022-06-06
    activity生命周期 activity Android
  • Android Activity生命周期详解
    Activity 的生命周期。 一、理解Activity Activity是Android程序的4大组件之一。 Activity是Android程序的表示层。程序的每一个显...
    99+
    2022-06-06
    activity生命周期 activity Android
  • Android Service生命周期详解
    引言 应用程序组件有一个生命周期——一开始Android实例化他们响应意图,直到结束实例被销毁。在这期间,他们有时候处于激活状态,有时候处于非激活状 态;对于活动,对用户有时...
    99+
    2022-06-06
    android service service service生命周期 Android
  • Android Fragment的生命周期详解
    Fragments的生命周期        每一个fragments 都有自己的一套生命周期回调方法和处理自己的用...
    99+
    2022-06-06
    android fragment fragment Android
  • React中的生命周期详解
    目录react生命周期常用的生命周期不常用的生命周完整的生命周期图react生命周期 函数组件无生命周期,生命周期只有类组件才拥有 生命周期函数指在某一时刻组件会自动调用并执行的函数...
    99+
    2022-11-13
  • Android  Activity生命周期和堆栈管理的详解
    Activity的生命周期Activity是Android中的四大组件之一,也是最基本,最重要的组件,是android系统提供一个可视化的,能与用户交换的组件。 系统提供的组件,不需要用户实例化,用户也不能实例化,是系统进行回调,例如web...
    99+
    2023-05-30
    android activity 生命周期
  • 微信APP生命周期及页面生命周期示例详解
    目录官方文档小程序的启动流程app生命周期页面的生命周期页面的生命周期(图)官方文档 ogram&jumpbackUrl=%2Fdoc%2F" rel="external n...
    99+
    2022-11-13
  • vue的生命周期钩子与父子组件的生命周期详解
    目录vue的生命周期钩子的介绍父子组件的生命周期加载渲染过程父组件更新过程子组件更新过程父子组件更新过程销毁过程代码示例created和mounted的区别vue的生命周期钩子的介绍...
    99+
    2022-11-13
    vue 生命周期 vue 父子组件生命周期
  • Vue.js的生命周期详细讲解
    本篇内容主要讲解“Vue.js的生命周期详细讲解”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Vue.js的生命周期详细讲解”吧!用Vue框架,熟悉它的生命周期...
    99+
    2022-10-19
  • Java中Servlet的生命周期详解
    目录Web基础和HTTP协议什么是ServletServlet的生命周期Web基础和HTTP协议 ┌─────────┐ ┌──────...
    99+
    2022-11-13
  • JavaWEB中Servlet的生命周期详解
    目录一、什么是Servlet 生命周期?二、Servlet 是由谁来维护的?三、Servlet 对象 是什么时候创建的?四、测试 Tomcat 什么时候被销毁?总结一、什么是Serv...
    99+
    2022-11-13
  • Spring 中 Bean 的生命周期详解
    目录前言1.Bean 生命周期2.代码演示总结前言 Java 中的公共类称之为 Bean 或 Java Bean,而 Spring 中的 Bean 指的是将对象的生命周期,交个 Sp...
    99+
    2022-11-13
  • React组件的生命周期详解
    目录React生命周期1、初始化阶段2、旧生命周期3、新生命周期4、react中性能优化的方案React生命周期 1、初始化阶段 componentDidMount:render之前...
    99+
    2023-03-19
    React 组件 生命周期 React 生命周期
  • spring之Bean的生命周期详解
    Bean的生命周期:Bean的定义——Bean的初始化——Bean的使用——Bean的销毁Bean的定义Bean 是 spring 装配的组件模型,一切实体类都可以配置成一个 Bean ,进而就可以在任何其他的 Bean 中使用,一个 Be...
    99+
    2023-05-31
    spring bean 生命周期
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作