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

Spring Bean

Bean的作用域

概念

  1. 通过@Controller,@Service,@Repository,@Component,@Configuration,@Bean来声明Bean对象
  2. 通过ApplicationContext或者BeanFactory来获取对象
  3. 通过@Autowired,Setter方法或者构造方法等来为应用程序注入所依赖的Bean对象

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

Singleton(单例作用域)

每个Spring IoC容器内同名称的Bean只有一个实例(默认),所有依赖注入共享同一对象

Prototype(原型作用域)

每次使用该Bean时都会创建新的实例,生命周期由调用方管理

Request(请求作用域)

每个HTTP请求生命周期内创建一个新实例,请求结束后销毁

Session(会话作用域)

每个HTTP Session生命周期内创建一个新实例,会话失效时销毁

Application(应用作用域)

每个ServletContext生命周期内创建新的实例

WebSocket

每个WebSocket生命周期内创建新的实例,连接关闭时销毁

Bean的生命周期

生命周期指的是一个对象从诞生到销毁的整个生命过程,把这个过程就叫做一个对象的生命周期,Bean的生命周期分为以下五个部分:

  1. 实例化(为Bean分配内存空间)
  2. 属性赋值(Bean注入和装配,比如@Autowired)
  3. 初始化(执行各种通知和执行初始化方法)
  4. 使用Bean
  5. 销毁Bean

@PostConstruct 和 @PreDestroy 详解

@PostConstruct注解是在初始化阶段,在依赖注入完成后执行,用于初始化非依赖属性

@PreDestroy注解是在销毁阶段,在Bean被销毁前执行,用于 安全释放资源

Spring加载Bean

SpringBoot的自动配置原理源码口是@SpringBootApplication注解,这个注解封装了三个注解

  • @SpringBootConfiguration标志当前类为配置类
  • @ComponentScan进行包扫描(默认扫描的是启动类所在的当前包及其子包)
  • @EnableAutoConfiguration
  1. @Import注解:读取当前项目下所有依赖jar包中两个文件里面定义的配置类(配置类中定义了@Bean注解标识的方法
  2. @AutoConfigurationPackage:把启动类所在的包下面的所有组件都注入到Spring容器中
http://www.dtcms.com/a/362752.html

相关文章:

  • LLM面试50问:NLP/RAG/部署/对齐/安全/多模态全覆盖
  • R语言根据经纬度获得对应样本的省份
  • WPF依赖属性和依赖属性的包装器:
  • iOS混淆工具实战 视频流媒体类 App 的版权与播放安全保护
  • 安卓学习 之 gradle下载失败的解决方法
  • Elasticsearch面试精讲 Day 5:倒排索引原理与实现
  • 跨越产业技术障碍、创新制造模式的智慧工业开源了
  • 【开题答辩全过程】以宠物生活社区为例,包含答辩的问题和答案
  • 扩散模型驱动的智能设计与制造:下一场工业革命?
  • 最新!阿里财报电话会蒋凡与吴泳铭透露重要信息:淘宝闪购成绩斐然;零售与AI双轮驱动;阿里云推出“Agent Bay”新产品···
  • 物联网为何离不开天硕工业级SSD固态硬盘?
  • maven 常用指令
  • Corona渲染噪点终结指南:3ds Max高效去噪全攻略
  • 【3D 入门-3】常见 3D 格式对比,.glb / .obj / .stl / .ply
  • 通信中FDD和TDD的区别
  • 【SpringBootWeb开发】《一篇带你入门Web后端开发》
  • 242. 有效的字母异位词| 349. 两个数组的交集
  • 框架-SpringMVC-1
  • 手写Muduo网络库核心代码1-- noncopyable、Timestamp、InetAddress、Channel 最详细讲解
  • hive udf 执行一次调用多次问题
  • 算法 --- 模拟
  • HDFS读写机制深度解析:分布式存储的核心奥秘
  • Zookeeper分布式锁原理
  • java-设计模式-5-创建型模式-建造
  • 科普:为什么在开发板上运行 Qt 程序时需要在命令后加 -platform linuxfb
  • 少儿舞蹈小程序从0到1(5):搭建关于我们页面
  • 深入浅出 RabbitMQ - SpringBoot2.X整合RabbitMQ实战
  • 23种设计模式-抽象工厂模式
  • 蓝桥杯算法之基础知识(4)
  • Mysql杂志(七)