当前位置: 首页 > news >正文

Bean作用域和生命周期

目录

Bean作用域的例子

作用域定义

Bean的六种作用域

设置作用域

 Spring的执行过程和Bean的生命周期

Spring的主要执行流程

 Bean的生命周期


在上篇博客中我们使用Spring存储和获取Bean,因此Bean是Spring中最重要的资源,今天这篇博客就深入了解Bean对象

Bean作用域的例子

 在上面的代码片段中我们可以看到并没修改dog对象却对后面注入对象造成了影响,这是什么原因呢,

 原因就是Bean默认是单例的,也就是所有人的使用的都是同一个Bean对象

作用域定义

我们在之前的学习中认为作用域就是变量在程序中的可用范围,而在Bean作用域则是指Bean对象在整个Spring中的某种行为模式,比如单例模式表示在Spring(框架)中只有一份,默认是单例模式

Bean的六种作用域

1.singleton:单例作用域(默认作用域) 只有一个全局对象

2.prototype:原型作用域(多例) 每次访问创建新对象

3.request:请求作用域(适用MVC) 每次HTTP请求创建一个对象

4.session:会话作用域 (适用MVC) 每次会话使用一个Bean对象

5.application:全局作用域(适用MVC) 一个http servlet context中共享一个对象

6.websocket:HTTP WebSocket作用域(适用WebSocket中)

设置作用域

我们可以使用@Scope标签声明Bean作用域,设置Bean的作用域,注解使用方式有两种

@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)//使用枚举设置
@Scope("prototype")//直接设置

可以看到我们添加了这一个注解就可以解决上诉问题了

 Spring的执行过程和Bean的生命周期

Spring的主要执行流程

1.启动容器

 2.Bean初始化

 配置文件中的Bean,配置了加载组件路径下的类进行扫描(看是否添加类注解)

 3.将Bean对象注入到Spring中

 4.使用Bean

 Bean的生命周期

一个对象从诞生到销毁的过程我们称为一个对象的生命周期

Bean的生命周期分为五个部分

1)实例化Bean(分配内存空间)

2)设置属性(依赖注入 DI)

3)Bean初始化

        ①执行各种通知

        ②初始化的前置方法(xml中定义 init-method 或者 @postConstruct)

        ③初始化方法

        ④初始化的后置方法

4)使用Bean

5)销毁Bean (xml destroy-method 或者 @PreDestroy)

 注意事项

先设置属性在初始化的原因是初始化过程中有很多的方法,方法有可能调用属性中某个对象的方法,如果先初始化在实例化的话就会造成空指针异常                         

http://www.lryc.cn/news/21031.html

相关文章:

  • STM32笔记
  • 【论文阅读】基于LevelDB的分布式数据库研究
  • JavaScript高级 Iterator Generator
  • 数字IC手撕代码--乐鑫科技(次小值与次小值出现的次数)
  • JavaScript DOM和BOM
  • JUC并发编程(二)
  • Python控制CANoe使能TestCase
  • sql的执行顺序
  • java 8 中的实用技巧
  • 自学大数据的第一天
  • redis秒杀
  • JS学习第3天——Web APIs之DOM(什么是DOM,相关API【创建、增删改查、属性操作、事件操作API】)
  • 【MySQL】增删改操作(基础篇)
  • STM32—DMA
  • C语言刷题(3)——“C”
  • 搭建Vue工程
  • C语言汉诺塔问题【图文详解】
  • 1、RocketMQ概述
  • 【POJ 3352】Road Construction 题解(Tarjan算法求边双连通分量缩点)
  • Python—单分支结构
  • rabbitmq添加用户,虚拟机步,设置rabbitmq配置文件
  • Codeforces Round#853 div2 A-C
  • 软考之操作系统知识
  • 【线性代数/计算复杂性理论】积和式的指数时间算法:Ryser算法
  • 代码随想录 NO52 | 动态规划_leetcode 647. 回文子串 516.最长回文子序列
  • 【数据挖掘】1、综述:背景、数据的特征、数据挖掘的六大应用方向、有趣的案例
  • 【架构师】零基础到精通——康威定律
  • Could not extract response: no suitable HttpMessageConverter
  • 文献计量三大定律之一---洛特卡定律及普赖斯定律
  • 2023年软考高级网络规划设计师