SpringBoot源码解析(二)

SpringBoot是由Pivotal团队创建的,旨在简化Spring应用的搭建和开发。它提供了自动配置、内嵌Tomcat、Maven简化配置等特性,使得开发更加高效。SpringBoot通过读取配置文件初始化bean工厂,并进行健康检查和监控。日志显示了从启动到Tomcat服务器初始化完成的过程,表明SpringBoot应用已成功启动。
摘要由CSDN通过智能技术生成

Spring Boot是一个用于构建Spring应用程序的开发框架,它简化了Spring应用程序的配置和开发过程。以下是关于Spring Boot的5000字详解:

一、概述

Spring Boot是由Pivotal团队提供的,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。它集成了大量常用的第三方库配置,例如Redis、JPA、RabbitMQ、Quartz等等,使得在Spring Boot应用中这些第三方库几乎可以零配置的开箱即用。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域成为领导者。

二、核心特性

  1. 自动配置:Spring Boot提供了自动配置功能,可以快速地创建一个运行良好的Spring应用程序。它集成了许多常用的第三方库和工具,并且可以根据项目需求自动配置它们。这大大简化了配置过程,提高了开发效率。
  2. 简化Maven配置:Spring Boot使用约定优于配置的原则,使得Maven配置更加简单。它提供了一个标准的目录结构和默认的配置文件,使得开发者可以快速地构建应用程序。
  3. 嵌入式Tomcat:Spring Boot支持嵌入式Tomcat服务器,使得部署应用程序更加方便。开发者不需要安装和配置Tomcat服务器,只需要将应用程序打包成WAR文件,就可以直接部署到嵌入式Tomcat服务器中。
  4. 简化Spring开发:Spring Boot简化了Spring开发的复杂性,使得开发者可以更加高效地开发应用程序。它提供了一些常用的注解和类,例如@SpringBootApplication、@Controller、@Service等,使得开发更加简单快捷。
  5. 健康检查和监控:Spring Boot提供了健康检查和监控功能,可以快速查看应用程序的运行状态。它集成了Actuator模块,提供了各种监控和诊断工具,例如JVM参数、内存使用情况、线程池等。

三、使用Spring Boot的好处

  1. 快速开发:Spring Boot简化了Spring应用程序的开发过程,提供了自动配置和快速开发的功能。它集成了许多常用的第三方库和工具,使得开发者可以更加高效地构建应用程序。
  2. 易于维护:Spring Boot将许多常用的配置项进行了默认设置,使得应用程序更加易于维护。同时,它还提供了丰富的文档和示例,使得开发者可以更加方便地解决问题。
  3. 可扩展性:Spring Boot的模块化设计使得应用程序易于扩展。如果需要添加新的功能或者集成其他第三方库,只需要在项目中添加相应的依赖即可。
  4. 安全性:Spring Boot提供了内置的安全性支持,例如CSRF保护、跨站请求伪造保护等。同时,它还集成了各种安全框架,例如Spring Security,使得应用程序更加安全可靠。
  5. 社区活跃:Spring Boot拥有庞大的社区和活跃的开发团队,使得开发者可以获得及时的技术支持和帮助。同时,它还提供了丰富的示例和教程,使得开发者可以快速上手并掌握其用法。

SpringBoot的启动过程。我们可以看出一个SpringBoot。入口为SpringApplication.run方法,

第二步,根据RepositoryConfigurationDelegate读取配置文件信息。初始化配置。

第三步,o.s.cloud.context.scope.GenericScope 根据配置文件信息创建bean工厂。

第四步, trationDelegate$BeanPostProcessorChecker检查bean创建是否合法。

第五步,o.s.b.w.embedded.tomcat.TomcatWebServe初始化springboot内置Tomcat容器。

第六步,w.s.c.ServletWebServerApplicationContext 创建Servlet

第七步,c.c.f.a.s.a.SpringValueProcessor   开启可访问镜像。

以下是一个springboot的加载输出日志:

2022-10-19 10:18:04.370  INFO 30268 --- [           main] cn.xxx.xxx.MXXXBusinessApplication  : No active profile set, falling back to default profiles: default
2022-10-19 10:18:06.598  INFO 30268 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode!
2022-10-19 10:18:06.603  INFO 30268 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data Redis repositories in DEFAULT mode.
2022-10-19 10:18:06.673  INFO 30268 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 45 ms. Found 0 Redis repository interfaces.
2022-10-19 10:18:07.116  INFO 30268 --- [           main] o.s.cloud.context.scope.GenericScope     : BeanFactory id=5eafe63c-6cce-367c-afac-7da202182c04
2022-10-19 10:18:07.930  INFO 30268 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.cloud.client.loadbalancer.reactive.LoadBalancerBeanPostProcessorAutoConfiguration' of type [org.springframework.cloud.client.loadbalancer.reactive.LoadBalancerBeanPostProcessorAutoConfiguration] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2022-10-19 10:18:07.934  INFO 30268 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.cloud.client.loadbalancer.reactive.LoadBalancerBeanPostProcessorAutoConfiguration$ReactorDeferringLoadBalancerFilterConfig' of type [org.springframework.cloud.client.loadbalancer.reactive.LoadBalancerBeanPostProcessorAutoConfiguration$ReactorDeferringLoadBalancerFilterConfig] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2022-10-19 10:18:07.936  INFO 30268 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'reactorDeferringLoadBalancerExchangeFilterFunction' of type [org.springframework.cloud.client.loadbalancer.reactive.DeferringLoadBalancerExchangeFilterFunction] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2022-10-19 10:18:08.842  INFO 30268 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8302 (http)
2022-10-19 10:18:08.856  INFO 30268 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2022-10-19 10:18:08.857  INFO 30268 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.48]
2022-10-19 10:18:09.048  INFO 30268 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2022-10-19 10:18:09.048  INFO 30268 --- [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 4631 ms
2022-10-19 10:18:10.574  INFO 30268 --- [           main] c.c.f.a.s.a.SpringValueProcessor         : Monitoring key: keys.RSAPublicKey, beanName: userTokenUtils, method: cn.ctg.common.util.UserTokenUtils.setRasPublicKey
2022-10-19 10:18:10.574  INFO 30268 --- [           main] c.c.f.a.s.a.SpringValueProcessor         : Monitoring key: keys.RSAPrivateKey, beanName: userTokenUtils, method: cn.ctg.common.util.UserTokenUtils.setRasPrivateKey
2022-10-19 10:18:10.575  INFO 30268 --- [           main] c.c.f.a.s.a.SpringValueProcessor         : Monitoring key: keys.aeskey, beanName: userTokenUtils, method: cn.ctg.common.util.UserTokenUtils.setAesKey

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奋力向前123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值