广告
返回顶部
首页 > 资讯 > 后端开发 > Python >详解Spring中Bean的作用域与生命周期
  • 600
分享到

详解Spring中Bean的作用域与生命周期

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

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

摘要

目录一、Bean的作用域二、Bean的生命周期使用代码演示Bean的生命周期一、Bean的作用域 通过spring容器创建一个Bean的实例时,不仅可以完成Bean的实例化,还可以使

一、Bean的作用域

通过spring容器创建一个Bean的实例时,不仅可以完成Bean的实例化,还可以使用Bean的scope属性为bean设置作用域。

语法格式:<bean id="别名" scope="作用域" class="对应实现类">

作用域的种类:(sing)

singleton和prototype区别:(该两种比较常用)

① singleton单实例,prototype多实例

② 设置scope值是singleton时候,加载spring配置文件时候就会创建单实例对象

设置scope值是prototype时候,在加载spring配置文件时候暂时不会创建对象,在调用getBean方法时候才创建多实例对象

singleton作用域:


//Cat.java
public class Cat {
    private String name;
    public void setName(String name) {
        this.name = name;
    }
}

配置文件beans5.xml


<bean id="cat" scope="singleton" class="com.jd.dao.Cat">
    <property name="name" value="大橘"></property>
</bean>

测试


//Bean的作用域测试方法
@Test
public void catTest(){
    //1.初始化Spring容器,加载配置文件
    ApplicationContext applicationContext = new ClassPathXmlApplicationContext("beans5.xml");
    //2.通过Spring容器获取Bean的实例
    Cat cat1 = (Cat) applicationContext.getBean("cat");
    Cat cat2 = (Cat) applicationContext.getBean("cat");
    //3.输出获取的实例
    System.out.println(cat1);
    System.out.println(cat2);
}

prototype作用域:

将配置文件beans5.xml中的scope属性改为prototype,再次运行测试:


<bean id="cat" scope="prototype" class="com.jd.dao.Cat">
    <property name="name" value="大橘"></property>
</bean>

3测试:

二、Bean的生命周期

Bean从创建到销毁称为Bean的生命周期,大体上Bean的生命周期共有七步:

(1)通过无参构造器创建bean实例

(2)调用属性setter方法为bean的属性设置值

(3)把bean实例传递bean后置处理器的方法postProcessBeforeInitialization

(4)调用bean的初始化的方法(需要配置初始化的方法)

(5)把bean实例传递bean后置处理器的方法postProcessAfterInitialization

(6)获取使用已经创建的bean

(7)当容器关闭时候,调用bean的销毁的方法(需要配置销毁的方法)

注意:

① 初始化方法、销毁方法都需要在Bean中作为属性手动配置;

② 只有singleton作用域的Bean才会执行销毁方法;

使用代码演示Bean的生命周期

(1)普通Java Bean:Cat.java


public class Cat {
    private String name;
    public void setName(String name) {
        this.name = name;
        System.out.println("第二步:调用属性setter方法为bean的属性设置值");
    }
    public Cat(){
        System.out.println("第一步;通过无参构造器创建bean实例");
    }
    //初始化方法(在配置文件中配置实现调用)
    public void initMethod(){
        System.out.println("第四步:调用bean的初始化的方法");
    }
    //销毁方法(在配置文件中配置实现调用)
    public void destroyMethod(){
        System.out.println("第七步:当容器关闭时候,调用bean的销毁的方法");
    }
}

(2)myBeanPostProcessor实现BeanPostProcessor接口,实现后置处理器:myBeanPostProcessor.java

(spring中的aop就是通过实现BeanPostProcessor接口实现的)


//myBeanPostProcessor实现BeanPostProcessor接口,实现后置处理器
public class myBeanPostProcessor implements BeanPostProcessor {
    @Override
    public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
        System.out.println("第三步:把bean实例传递bean后置处理器的方法");
        return bean;
    }
    @Override
    public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
        System.out.println("第五步:把bean实例传递bean后置处理器的方法");
        return bean;
    }
}

(3)配置文件:beans5.xml


<!--scope属性必须设置为singleton,否则创建的Bean不会被销毁-->
<!--init-method属性配置初始化方法,destroy-method属性销毁方法-->
<bean id="cat" scope="singleton" class="com.jd.dao.Cat" init-method="initMethod" destroy-method="destroyMethod">
    <property name="name" value="大橘"></property>
</bean>
<!--配置后置处理器,为当前配置文件中的所有bean添加后置处理器的处理-->
<bean id="myBeanPostProcessor" class="com.jd.dao.myBeanPostProcessor"></bean>

(4)测试


@Test
public void catTest(){
    //1.初始化Spring容器,加载配置文件
    ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("beans5.xml");
    //2.通过Spring容器获取Bean的实例
    Cat cat = (Cat) applicationContext.getBean("cat");
    //3.输出获取的实例
    System.out.println("第六步:获取创建Bean实例"+cat);
    //4.手动关闭
    applicationContext.close();
}

到此这篇关于详解Spring中Bean的作用域与生命周期的文章就介绍到这了,更多相关Spring Bean的作用域与生命周期内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 详解Spring中Bean的作用域与生命周期

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

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

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

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

下载Word文档
猜你喜欢
  • 详解Spring中Bean的作用域与生命周期
    目录一、Bean的作用域二、Bean的生命周期使用代码演示Bean的生命周期一、Bean的作用域 通过Spring容器创建一个Bean的实例时,不仅可以完成Bean的实例化,还可以使...
    99+
    2022-11-12
  • Spring中Bean的作用域与生命周期详解
    目录一、Bean的作用域1、单实例Bean声明2、多实例Bean声明二、Bean的生命周期1、bean的初始和销毁2、bean的后置处理器总结一、Bean的作用域 首先我们来讲一下有...
    99+
    2022-11-12
  • Spring 中 Bean 的生命周期详解
    目录前言1.Bean 生命周期2.代码演示总结前言 Java 中的公共类称之为 Bean 或 Java Bean,而 Spring 中的 Bean 指的是将对象的生命周期,交个 Sp...
    99+
    2022-11-13
  • Spring中Bean的作用域与生命周期是什么
    这篇文章主要讲解了“Spring中Bean的作用域与生命周期是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Spring中Bean的作用域与生命周期是什么”吧!一、Bean的作用域通过S...
    99+
    2023-06-22
  • Java Spring中Bean的作用域及生命周期
    目录1.Bean的作用域1.1 被修改的Bean案例1.2 为什么使用单例模式作为默认作用域1.3 作用域1.4 Bean的6种作用域1.5 设置作用域2.Spring执行流程和Be...
    99+
    2022-11-13
    Java Spring中Bean的作用域 Spring中Bean的生命周期
  • spring之Bean的生命周期详解
    Bean的生命周期:Bean的定义——Bean的初始化——Bean的使用——Bean的销毁Bean的定义Bean 是 spring 装配的组件模型,一切实体类都可以配置成一个 Bean ,进而就可以在任何其他的 Bean 中使用,一个 Be...
    99+
    2023-05-31
    spring bean 生命周期
  • Java深入讲解Bean作用域与生命周期
    目录1. Bean 的作用域1.1 观看案例1.2 作用域的定义1.3 Bean 的 6 种作用域1.4 如何设置 Bean 的作用域① @Scope(ConfigurableBea...
    99+
    2022-11-13
  • Spring Bean中的作用域和生命周期实例分析
    这篇文章主要介绍“Spring Bean中的作用域和生命周期实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Spring Bean中的作用域和生命周期实例分析”文章能帮助大...
    99+
    2023-07-02
  • Java Bean的作用域,生命周期和注解
    目录Bean的作用域singleton作用域Bean的生命周期1.创建Bean的实现类2.配置Bean 3.测试生命周期 Bean的装配方式基于XML配置的装配基于注解的装配1.@C...
    99+
    2022-11-12
  • Spring创建Bean的生命周期详析
    目录1.Bean 的创建生命周期2.Spring AOP 大致流程3.Spring 事务4.Spring 源码阅读前戏BeanDefinitionBeanDefinitionRead...
    99+
    2022-11-13
  • 深入了解Spring的Bean生命周期
    目录源码下载什么是 Spring Bean 的生命周期Bean的生命周期Spring角度查看bean的定义与注册SpringBoot角度查看bean定义和注册实例化,依赖注入,初始化...
    99+
    2022-11-12
  • Java之Spring Bean作用域和生命周期源码分析
    这篇文章主要讲解了“Java之Spring Bean作用域和生命周期源码分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java之Spring Bean作用域和生命周期...
    99+
    2023-07-05
  • Spring IOC容器Bean的作用域及生命周期是什么
    本篇内容介绍了“Spring IOC容器Bean的作用域及生命周期是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!bean作用域bean...
    99+
    2023-06-30
  • Java开发学习之Bean的作用域和生命周期详解
    目录一、Bean 的作用域二、Spring 的执行流程三、Bean 的生命周期一、Bean 的作用域 在之前学习Java基础的时候,有接触到作用域这样的概念。一个变量并不一定在任何区...
    99+
    2022-11-13
  • 全面详解Spring Bean生命周期教程示例
    目录Spring 中 Bean 的生命周期Bean 的实例化构造方法注入工厂方法注入Bean 的属性赋值setter注入构造方法注入Bean 的初始化初始化方法Initializin...
    99+
    2023-05-14
    Spring Bean生命周期 Spring Bean
  • Spring中bean的生命周期有多长
    这篇文章主要介绍“Spring中bean的生命周期有多长”,在日常操作中,相信很多人在Spring中bean的生命周期有多长问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Spring中bean的生命周期有多长...
    99+
    2023-06-02
  • spring中bean的生命周期是什么
    在Spring中,Bean的生命周期包括以下几个阶段:1. 实例化:当Spring容器接收到请求时,根据配置文件或注解等方式,在内存...
    99+
    2023-09-27
    spring bean
  • Spring源码解析之Bean的生命周期
    一、Bean的实例化概述 前一篇分析了BeanDefinition的封装过程,最终将beanName与BeanDefinition以一对一映射关系放到beanDefinitionMa...
    99+
    2022-11-12
  • 如何理解Spring框架中Bean的生命周期
    如何理解Spring框架中Bean的生命周期,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。 1.Bean的生命周期关于Bean的...
    99+
    2022-10-19
  • 深入理解Spring中bean的生命周期介绍
    以ApplocationContext上下文单例模式装配bean为例,深入探讨bean的生命周期:(1).生命周期图:(2).具体事例:person类实现BeanNameAware,BeanFactoryAware接口public clas...
    99+
    2023-05-31
    spring bean 生命周期
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作