尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

springboot手写源码总结

springboot手写源码总结
📅 发布时间:2026/6/19 7:44:27

springboot手写源码总结

先创建spring容器,然后将配置类(也就是启动类,因为上面有标注@ComponentScan和@Configuration注解)注册到spring容器中去,进行扫描。然后将spring容器绑定到servlet中,将servlet添加到tomcat容器中。

具体是现是下面的这一行代码:

tomcat.addServlet(contextPath, "dispatcher", new DispatcherServlet(applicationContext));

子项目依赖父项目,怎样让父项目中的某个jar包不传递到子项目中,解决办法是是将父项目中的那个jar包下面添加上optional标签。

<dependency><groupId>org.apache.tomcat.embed</groupId><artifactId>tomcat-embed-core</artifactId><version>9.0.60</version><optional>true</optional>
</dependency>

使用ImportSelector接口,可以批量的向ioc容器中导入配置类。

image-20250920132751657

springboot为了提高启动速度,这些自动配置类不是都需要进行加载的,那么他是怎样进行判断的,答案是通过自动配置类上面的@ConditionnalOnClass注解进行判断的,以

//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//package org.springframework.boot.autoconfigure.amqp;@Configuration(proxyBeanMethods = false
)
// 会判断RabbitTemplate和Channel这两个类是否在容器中存在
// 要想判断这两个类是否存在,需要先加载RabbitAutoConfiguration类,然后再加载@ConditionalOnClass注解标注的这两个类,这对springboot来说是非常耗费时间的,所以springboot做了提前映射。
@ConditionalOnClass({RabbitTemplate.class, Channel.class})
@EnableConfigurationProperties({RabbitProperties.class})
@Import({RabbitAnnotationDrivenConfiguration.class})
public class RabbitAutoConfiguration {public RabbitAutoConfiguration() {}// 省略代码
}

image-20250920134419615

在spring-autoconfigure-metadata.properties配置文件中

image-20250920135105509

org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration.ConditionalOnClass=com.rabbitmq.client.Channel,org.springframework.amqp.rabbit.core.RabbitTemplate

这样springboot就不用加载RabbitAutoConfiguration类了。

在springboot3中做了优化,不会再去加载spring.factories配置文件了,而是把自动配置类单独抽取出来放到了一个配置文件中了。

下来看看徐庶老师讲解的springboot3新特性。

相关新闻

  • 低代码 + AI 构建智慧校园系统:某高校宿舍报修平台的48小时构建全流程
  • Microsoft OLE漏洞致远程代码执行安全公告解析
  • 写代码还是写提示词?——Prompt 工程是不是程序员的新技能树

最新新闻

  • MPC555/556开发支持:调试模式、开发端口与寄存器详解
  • 2026合肥全域名表变现渠道盘点,连锁奢品行合扬综合实力位居前列 - 开心测评
  • BP Eva 赋能全周期绩效管理,让每轮考核沉淀员工能力成长档案
  • 2026年6月最新劳力士中国官方售后服务热线地址网点及客服电话 - 劳力士服务中心
  • 无创脑机接口解码脑电语音:EEG+深度学习的临床实践路径
  • 2026本溪2026正规漏水检测维修公司精选口碑榜TOP5权威推荐-精准定位检测漏水点-专业防水补漏堵漏维修、卫生间/厨房/屋顶/天沟/地下室/阳台防水漏水检测维修 - 安佳防水

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号