• Spring的执行流程 & Bean的作用域与生命周期


    目录

    Bean的作用域

    设置作用域

    Spring的执行流程

    Bean的生命周期


    Bean的作用域

    Bean的作用域是指, Bean在Spring框架中的某种行为模式

    1.singleton  单例模式

            singleton是Spring中的默认的Bean作用域,它表示在整个应用程序中只存在一个Bean实例,每 次请求该Bean实例时都会返回同一个Bean

    2.prototype 原型模式(多例模式)

            prototype表示每次请求该bean时,都会重新创建一个实例,每个bean实例都有自己的属性和状态,彼此之间是相互独立的

    3.request 请求

            request表示在一次http请求中,只会存在一个bean实例,在同一个请求里多次请求该bean都会指向同一个实例.在不同的http请求里,bean的实例是相互独立的

    4.session 会话

            session表示在一次http session里只会存在一个bean实例,同一个session里多次请求该bean都会返回同一个bean实例.在不同的session会话里,bean的实例是相互独立的

    5.application 全局

            application表示在一个servlet context只存在一个bean实例,该作用域在                                   Spring  ApplicationContext 上下文中有效

    6.websocket

            websocket 表示在一个 WebSocket 中只存在一个 Bean 实例。该作用域只在                         Spring  ApplicationContext 上下文中有效。

    设置作用域

    通过@Scope注解来设置作用域

    1.直接设置

    2.枚举设置

    怕拼错单词的就可以通过这个方法设置

    3.通过xml配置文件设置

    Spring的执行流程

    1.启动容器

    2.读取Spring配置并实例化Bean

            根据扫描路径,找到所有含有五大类注解和方法注解的Bean对象,然后实例化Bean(分配内存空间)

    3.将Bean加入到容器中

    4.装配Bean属性

            给当前类的Bean对象装配属性,通过@Autowried @Resource 注解 注入.

    Bean的生命周期

    在 Spring 中,Bean 的生命周期指的是 Bean 实例从创建到销毁的整个过程。Spring 容器负责管理 Bean 的生命周期,包括实例化、属性赋值、初始化、销毁等过程。

    Bean 的生命周期可以分为以下几个阶段:

    1.实例化

            Spring容器启动时,会根据配置文件实例化Bean对象,就是为Bean分配内存空间.据Bean的作用域的不同,实例化的方式也会不同. 如singleton就是立即实例化,prototype则是在被请求时才会实例化

    2.属性赋值

            Spring通过注解设置的属性进行依赖注入( DI ), 有三种注入方式:属性注入,setter注入,构造方法注入

    3.初始化

            3.1执行各种通知

            3.2执行初始化前置方法

            3.3初始化

            3.4执行初始化后置方法

    4.使用

            在初始化完成后,Bean就可以被应用程序调用了.应用程序可以通过Spring容器获取Bean的实例,并调用Bean的各种方法

    5.销毁

            在应用程序关闭时,Spring 容器会自动销毁所有的 Bean 实例。Bean 的销毁方法可以通过实现 DisposableBean 接口、@PreDestroy 注解等方式实现。

  • 相关阅读:
    【Pytorch with fastai】第 18 章 :使用 CAM 进行 CNN 解释
    day-62 代码随想录算法训练营(19)图论 part 01
    【信创】 JED on 鲲鹏(ARM) 调优步骤与成果 | 京东云技术团队
    使用jenkins自动化部署
    Spring Boot进阶(55):SpringBoot之集成MongoDB及实战使用 | 超级详细,建议收藏
    “北京到底有谁在啊”影视APP开发,解锁最简单的快乐
    Web Servlet
    为什么在pycharm里的全国热力图没有数值
    什么是Redis的数据分片?
    将来完成时习题
  • 原文地址:https://blog.csdn.net/weixin_60257917/article/details/133859249