您现在的位置是:首页 >技术杂谈 >SpringBoot执行流程网站首页技术杂谈
SpringBoot执行流程
简介SpringBoot执行流程
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
今天看项目代码,但是不知道SpringBoot的执行流程,在此记录学习一下
一、SpringBoot是什么?
- 他是依赖于spring的,比起spring,除了拥有spring的全部功能外,springboot无需繁琐的xml配置
- 这取决于它自身强大的自动装配功能,并且自身已经嵌入Tomcat,jetty等web容器,继承了springmvc,是的springboot可以直接运行,不需要额外的容器,
- 它提供了一些大型项目中常见的非功能性特性,比如嵌入式服务器,安全,指标,健康检测,外部配置等.
二、Spring Boot的核心功能
- 内嵌的Servlet容器:Spring Boot可以选择内嵌Tomcat,jetty或者Undertow,无须以war包的形式部署项目
- 简化的Maven配置:Spring Boot提供推荐的基础POM文件来简化Maven配置.
- 自动配置Spring:SpringBoot会根据项目依赖来自动配置Spring框架,极大地减少项目要使用的配置
- 提供生成就绪型功能:提供可以直接在生成环境中使用的功能,如性能指标,应用信息和应用健康检查.
- 无代码生成和xml配置:springboot不生成代码.完全不需要任何xml配置即可实现Spring的所有配置
- 约定大于配置
三.Spring Boot 常用注解
- @SpringBootApplication:表明这是一个SpringBoot应用
- @RestController:这意味着它会返回json格式的数据并且它是一个Controller类
- @RequestMapping可以处理多种http请求
四.Spring Boot 依赖管理机制
- maven具有依赖传递原则,A-B-C,A就拥有B和C,导入了场景启动器,它能自动把这个场景的所有核心依赖全部导入进来
- 为什么springboot的版本号都不用写?
- 因为每个boot项目都有一个父项目spring-boot-starter-parent
- parent的父项目是spring-boot-dependencies
- 父项目 版本仲裁中心 把所有常见的jar的依赖版本都声明好了(我艹这个我感觉是真牛逼啊,省去了好多版本不兼容的问题啊)
- 例子:mysql-connector-j
- 自定义版本号:
- 利用maven的就近原则
- 直接在当前项目properties标签中声明父项目用的版本属性key
- 直接在导入依赖的时候声明版本
- 利用maven的就近原则
- 第三方jar包
- boot父项目没有管理的需要自行声明好
五.Spring Boot 常用注解
- 条件注解
- @ConditionalOnClass:如果类路径中存在这个类,则触发指定行为
- @ConditionalMissingClass:如果类路径中不存在这个行为,则触发指定行为
- @ConditionalOnBean:如果容器中存在这个Bean(组件).则触发指定行为
- @ConditionalOnMissingBean:如果容器中不存在这个Bean(组件),则触发指定行为
- @ConditionalOnBean(value=组件类型,name=组件名字):判断容器中是否有这个类型的组件,并且名字是指定的值
- 属性绑定:
- @ConfigurationProperties:声明组件的属性和配置文件哪些前缀开始项进行绑定
- @EnableConfigurationProperties:快速注册注解:
- 使用场景:SpringBoot默认只扫描自己主程序所在的包,如果导入第三方包,即使组件上标注了@Component,@ConfigurationProoerties注解也没用.因为组件都没有扫描上,此时使用这个注解就可以快速进行属性绑定并把组件注册进容器
- 将容器中任意组件(Bean)的属性值和配置文件的配置项的值进行绑定
- 给容器中注册组件(@Component,@Bean)
- 使用@ConfigurationProperties声明组件和配置文件的哪些配置项进行绑定
总结
参考学习:
9千字长文带你了解SpringBoot启动过程--史上最详细 SpringBoot启动流程-图文并茂_Fly丶X的博客-CSDN博客1、SpringBoot3-快速入门 · 语雀感谢尚硅谷springboot3教程
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。