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

SpringBoot IOC

IOC(Inversion of Controller,控制反转)是 SpringBoot 框架的核心。用户只需要用注解声明对象,IOC 容器完成对象的创建和管理。

IOC 容器

Spring 中的 IOC 容器必须实现 BeanFactory 接口。Bean 是 IOC 容器管理的 Java 对象。BeanFactory 接口定义获取 bean 的方法,按类型获取,按名称获取BeanFactory 接口定义 bean 的作用域,是单例对象还是原型对象。

但是 Springboot 中 IOC 容器实现的是 ApplicationContext 接口。它继承 BeanFactory 接口,额外提供环境配置接口,时间发布接口,资源解析接口。

装配 bean

可以用 @Bean 注解将单个对象注入 IOC 容器。也可以用 @ComponentScan 和 @Component 组合批量注册 IOC 容器,@ComponentScan 定义扫描的包范围,
@Component 注解的类被注册到 IOC 容器。

获取 bean

IOC 容器通过依赖注入完成 bean 的装配。@Autowired 注解从容器中找到 bean 进行注入。它首先根据类型找到对应的 bean。如果类型 bean 不唯一,则根据名称匹配 bean。如果仍未找到,则抛出异常。默认情况下 bean 必须存在,required =false参数允许 bean 不存在。
@Primary 注解和 @Quailfier 注解可以搭配 @Autowired 实现更精确注入对象。

bean 生命周期

IOC 容器管理 bean 的生命周期,在各个阶段提供钩子函数供用户自定义功能。
bean 的生命周期大致分为:定义,初始化,使用,销毁。
定义阶段:Spring 通过 @ComponentScan 定义的路径寻找包含 @Component 的类。然后解析类保存到 BeanDefinition实例,即 bean 的定义。第三步,IOC 容器装载 bean 定义。
之后如果没有配置延迟加载,IOC 容器将初始化 bean。

配置文件

可以在 application.yaml 定义配置属性,Springboot 将自动加载属性。一种使用方法是 @Value 注解,另一种是 @ConfigurationProperties 注解。前者获取单个属性配置,后者装配多个属性配置。

条件装配

@Condition注解条件装配允许用户自定义装载 bean 的过滤条件。

Bean 的作用域

bean的常用作用域有四种:单例,原型,session,aoolication。单例表示容器只存在单例对象。原型表示IOC容器每次都返回新对象。session 和 application 都是 web 概念。

环境配置

@Profile 可以帮助配置不同环境。

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

相关文章:

  • C++之vector类的代码及其逻辑详解 (中)
  • 【自动化运维神器Ansible】YAML语法详解:Ansible Playbook的基石
  • vue引入阿里巴巴矢量图库的方式
  • Kotlin协程极简教程:5分钟学完关键知识点
  • docker desktop入门(docker桌面版)(提示wsl版本太低解决办法)
  • 【MySQL】增删改查操作 —— CRUD
  • Elasticsearch 混合检索一句 `retriever.rrf`,把语义召回与关键词召回融合到极致
  • MySqL(加餐)
  • 在 AKS 中运行 Azure DevOps 私有代理-1
  • Cursor 与 VS Code 与 GitHub Copilot 的全面比较
  • 字节Seed发布扩散语言模型,推理速度达2146 tokens/s,比同规模自回归快5.4倍
  • [spring6: 分布式追踪]-实战
  • AI赋能测试:技术变革与应用展望
  • 在ChinaJoy ,Soul发布“莫比乌斯·第三弹”ChinaJoy特别款
  • 深入 Go 底层原理(十二):map 的实现与哈希冲突
  • 高性能实时分析数据库:Apache Druid 查询数据 Query data
  • RK3399 启动流程 --从复位到系统加载
  • 变频器实习DAY20 测试经验总结
  • .NET 中,Process.Responding 属性用于检查进程的用户界面是否正在响应
  • 【嵌入式汇编基础】-ARM架构基础(三)
  • u-boot启动过程(NXP6ULL)
  • 网络常识-子网掩码
  • 音视频学习(四十四):音频处理流程
  • Oracle 11g RAC集群部署手册(三)
  • PHP面向对象编程与数据库操作完全指南-上
  • Redis 核心概念、命令详解与应用实践:从基础到分布式集成
  • C语言字符函数和字符串函数全解析:从使用到模拟实现
  • 力扣面试150题--回文数
  • 2411. 按位或最大的最小子数组长度
  • 历史数据分析——中青旅