Spring中Bean的生命周期实例讲解

 更新时间:2023年08月17日 09:09:07   作者:程序小勇  
这篇文章主要介绍了Spring中Bean的生命周期讲解,而Spring中的一个Bean从开始到结束经历很多过程,但总体可以分为六个阶段Bean定义、实例化、属性赋值、初始化、生存期、销毁,需要的朋友可以参考下

一、bean生命周期

其定义为:从对象的创建到销毁的过程。

而Spring中的一个Bean从开始到结束经历很多过程,但总体可以分为六个阶段Bean定义、实例化、属性赋值、初始化、生存期、销毁。

二、案例代码演示

1.首先我们来创建一个包,在包中创建一个Orders的对象,然后在对象中创建一个无参构造方法....

package Collectiona.bean;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;
public class MyBeanPost implements BeanPostProcessor {
    @Override
    public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
        System.out.println("在初始化之前执行的方法。");
        return bean;
    }
    @Override
    public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
        System.out.println("在初始化之后执行的方法。");
        return bean;
    }
}

2.SpringBean生命周期中的增强接口PostProcessor;

postProcessBeforeInitialization方法执行前,会执行很多Aware类型的接口,这种类型接口作用是加载资源到Spring容器中。

我们在创建一个MyBeanPost的类来实现BeanPostProcessor接口。 ​

package Collectiona.bean;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;
public class MyBeanPost implements BeanPostProcessor {
    @Override
    public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
        System.out.println("在初始化之前执行的方法。");
        return bean;
    }
    @Override
    public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
        System.out.println("在初始化之后执行的方法。");
        return bean;
    }
}

3.在xml文件中配置相关信息。初始化方式,配置的init-method;最后容器销毁,配置的destroy-method.

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    <bean id="orders" class="Collectiona.bean.Orders" init-method="initMethod" destroy-method="destroyMethod">
        <property name="oname" value=""></property>
    </bean>
    <bean id="myBeanPost" class="Collectiona.bean.MyBeanPost">
    </bean>
</beans>

4.最后是进行测试输出:

package Collectiona.testSpring;
import Collectiona.bean.Orders;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class demo {
    public static void main(String[] args) {
ClassPathXmlApplicationContext("classpath:Bean4.xml");
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath:Bean4.xml");
        Orders orders = context.getBean("orders",Orders.class);
        System.out.println("第四步:获取bean的实例对象");
        System.out.println(orders);
        context.close();
    }
    }

最终输出的结果是:

到此这篇关于Spring中Bean的生命周期实例讲解的文章就介绍到这了,更多相关Bean的生命周期内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java结合Vue项目打包并进行服务器部署

    Java结合Vue项目打包并进行服务器部署

    本文主要介绍了Java结合Vue项目打包并进行服务器部署,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • Spring Boot 中PageHelper 插件使用配置思路详解

    Spring Boot 中PageHelper 插件使用配置思路详解

    这篇文章主要介绍了Spring Boot 中PageHelper 插件使用配置及实现思路,通过引入myabtis和pagehelper依赖,在yml中配置mybatis扫描和实体类,具体实现方法跟随小编一起看看吧
    2021-08-08
  • 如何解决freemarker静态化生成html页面乱码的问题

    如何解决freemarker静态化生成html页面乱码的问题

    这篇文章主要介绍了如何解决freemarker静态化生成html页面乱码的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-01
  • Java中Spring使用Quartz任务调度定时器

    Java中Spring使用Quartz任务调度定时器

    本篇文章主要介绍了Java中Spring使用Quartz任务调度定时器,具有一定的参考价值,有兴趣的可以了解一下。
    2017-02-02
  • Java实现多行文字水印的方法详解

    Java实现多行文字水印的方法详解

    这篇文章主要为大家详细介绍了如何利用Java实现多行文字水印的方法,文中的示例代码讲解详细,具有一定的借鉴价值,需要的可以参考一下
    2023-02-02
  • 生产者消费者模型ThreadLocal原理及实例详解

    生产者消费者模型ThreadLocal原理及实例详解

    这篇文章主要介绍了生产者消费者模型ThreadLocal原理及实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • RocketMQ 源码分析Broker消息刷盘服务

    RocketMQ 源码分析Broker消息刷盘服务

    这篇文章主要为大家介绍了RocketMQ 源码分析Broker消息刷盘服务示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • 基于Springboot一个注解搞定数据字典的实践方案

    基于Springboot一个注解搞定数据字典的实践方案

    这篇文章主要介绍了基于Springboot一个注解搞定数据字典问题,大致的方向是自定义注解,在序列化的时候进行数据处理,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • SpringBoot3.1.2 引入Swagger报错Type javax.servlet.http.HttpServletRequest not present解决办法

    SpringBoot3.1.2 引入Swagger报错Type javax.servlet.http

    这篇文章主要介绍了SpringBoot3.1.2 引入Swagger报错Type javax.servlet.http.HttpServletRequest not present解决办法,文中通过代码示例给大家介绍的非常详细,需要的朋友可以参考下
    2024-03-03
  • Java Home变量的详细配置操作步骤

    Java Home变量的详细配置操作步骤

    用到Java项目的时候,有时候要用到Java_home,这个需要在系统配置中配置一下,如何操作呢?以下为详细的图文步骤,感兴趣的朋友跟随小编一起看看吧
    2023-11-11

最新评论