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

Bean——IOC(Github上有代码)

源码

https://github.com/cmdch2017/Bean_IOC.git

获取Bean对象

在这里插入图片描述
BeanFactory
在这里插入图片描述

Bean的作用域

在这里插入图片描述

第三方Bean需要用@Bean注解

在这里插入图片描述
比如消息队列项目中,需要用到Json的消息转换器,这是第三方的Bean对象,所以不能用@Component,而要用@Bean
在这里插入图片描述

SpringBoot原理

起步依赖

依赖传递,a依赖b,b依赖c
在这里插入图片描述

自动配置

Springboot的自动配置就是当Spring容器启动后,一些配置类、bean对象就自动存入到了IOC容器中,不用手动配置了
在这里插入图片描述
Springboot采用的是@EnableXXXX注解,分装了@Import注解,导入对应的类

在这里插入图片描述
在这里插入图片描述
自动配置原理是Spring Boot的核心功能之一,它可以根据项目中的配置文件、类路径、环境变量等条件,自动地配置应用程序。通过自动配置,开发人员可以专注于编写业务逻辑,而无需花费时间在繁琐的配置工作中。

总结

Spring Boot的自动配置基于以下原理:

组合注解:@SpringBootConfiguration是一个组合注解,由@ComponentScan、@EnableAutoConfiguration和@SpringBootConfiguration组成。@SpringBootConfiguration与普通@Configuration相比,唯一区别是前者要求整个app中只出现一次@ComponentScan。excludeFilters用于在组件扫描时进行排除,也会排除自动配置类。
自动配置类:@EnableAutoConfiguration是一个组合注解,由@AutoConfigurationPackage、@Import(AutoConfigurationImportSelector.class)等注解组成。@AutoConfigurationPackage用来记住扫描的起始包。@Import(AutoConfigurationImportSelector.class)用来加载META-INF/spring.factories中的自动配置类。
条件判断:Spring底层使用@Conditional注解进行条件判断。根据不同的条件判断,如果满足指定的条件,整个配置类里面的配置就会生效。例如,@ConditionalOnWebApp判断当前应用是否是web应用,如果是,当前配置类生效。
属性绑定:Spring Boot会自动将配置文件中的属性值绑定到相应的Bean属性上。例如,在application.properties文件中配置数据库连接信息,Spring Boot会自动将该属性值绑定到相应的DataSource Bean上。
自动装配:通过Java的反射机制和注解,Spring Boot会自动将配置类中的Bean注入到相应的组件中。例如,在配置类中声明一个DataSource Bean,Spring Boot会自动将其注入到需要使用DataSource的组件中。
总之,Spring Boot的自动配置原理主要基于组合注解、自动配置类、条件判断、属性绑定和自动装配等技术实现。通过这些技术,Spring Boot可以自动化地根据项目中的配置文件、环境变量等条件来配置应用程序,提高了开发效率和可维护性。

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

相关文章:

  • 功能更新|Leangoo领歌免费敏捷工具支持SAFe大规模敏捷框架
  • 漏刻有时百度地图API实战开发(1)华为手机无法使用addEventListener click 的兼容解决方案
  • 交流信号继电器 DX-31BJ/AC220V JOSEF约瑟 电压启动 面板嵌入式安装
  • SpringCloudAlibaba系列之Nacos配置管理
  • Kyligence Copilot 亮相第六届进博会,增添数智新活力
  • MySQL 批量修改表的列名为小写
  • ElasticSearch 查询方法示例 java
  • 5G毫米波通信中的关键技术
  • 2.3.3 交换机的RSTP技术
  • 国外访问学者/博士后留学人员反诈骗指南
  • 设计模式之组合模式-创建层次化的对象结构
  • Windows 有趣功能集锦
  • 【nodejs版playwright】02-支持多套测试环环境执行用例
  • React高阶组件(Higher-Order Components, HOCs)
  • 利用RoboBrowser库和爬虫代理实现微博视频的爬取
  • 使用Redis实现缓存及对应问题解决
  • 【穿透科技】P2P穿透模块介绍
  • 中国第二批,11个大模型备案获批
  • 一文搞定多端开发,做全栈大牛 附三大企业实战项目
  • 带有滑动菜单指示器的纯 CSS 导航选项卡
  • Java学习笔记41——接口组成更新
  • iview实现table里面每行数据的跳转
  • Docker快速搭建Drupal内容管理系统并远程访问
  • Ansible优化大全
  • Python|OpenCV-图像的添加和混合操作(8)
  • Vue3+vite+cesium环境搭建
  • metaObjecthandler 的基本理解与使用(自动插入更新人和创建人)
  • SpringBoot与ES7实现多条件搜索
  • 【排序算法】 快速排序(快排)!图解+实现详解!
  • 急招开发、安全工程师实习生