SpringBoot2.0源码解析一

第一章:系统总览

第一节:导学

  • 根据慕课网小马哥springboot2.0深度实践,边学边记
学习目的
  1. SpringBoot如何基于SpringFramework 逐步走向自动装配?
  2. SpringApplication是怎么样掌控Spring应用生命周期的?
  3. SpringBoot外部化配置与Spring Environment 抽象之间是什么关系?
  4. Spring Web MVC 向Spring Reactive WebFlux 过渡的真实价值和意义?
课程收获
  • spring 技术和实现原理
  • springboot 核心技术
  • BAT大规模微服务基础设施开发与生产实施经验
技术储备
  • java8 lambda
  • spring framework 基础较熟练
  • spirngboot基础
运行环境
  • java8
  • idea
  • springboot版本2.0

第二节:SpringBoot易学难精

易学
  • 组件自动装配:规约大于配置,专注于核心业务逻辑
  • 外部化配置:一次构建、按需调配、到处运行(在jar包外配置端口等)
  • 嵌入式容器:内置容器、无需部署、独立运行
  • SpringBoot Starter:简化依赖、按需装配、自我包含
  • Production-Ready:一站式运维、生态无缝整合
难精
  • 组件自动装配:模式注解、@Enable模块、条件装配、加载机制
  • 外部化配置:Environment抽象、生命周期、破坏性变更
  • 嵌入式容器:Servlet Web容器、Reactive Web容器(基于Netty)
  • SpringBoot Starter:依赖管理、装配条件、装配顺序
  • Production-Ready:健康检查、数据指标、@Endpoint管控

第三节:SpringBoot三大核心特性

  • 组件自动装配:web MVC 、web Flux 、JDBC等
    • 激活:@EnableAutoConfiguration
    • 配置:/META-INF/spring.factories
    • 实现:XXXAutoConfiguration
  • 嵌入式web容器:Tomcat、Jetty、Undertow和Netty Web Server
  • 生产准备特性:指标、健康检查、外部化配置等
    • 指标:/actuator/metrics
    • 健康检查:/actuator/health
    • 外部化配置:/actuator/configprops

第四节:web应用

传统Servlet应用
依赖
<dependency>
	<groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
Servlet组件
  • Servlet

  • Filter

  • Listener

Servlet注册
  • Servlet注解
  • Spring Bean
  • RegistrationBean
异步非阻塞
  • 异步Servlet
  • 非阻塞Servlet
Spring Web MVC
1. Web MVC 视图
  • ViewResolver

  • View

模板引擎
  • Thymeleaf
  • Freemarker
  • JSP
内容协商
  • (使用多个模板引擎要使用)

  • ContentNegotiationConfigurer

  • ContentNegotiationStrategy

  • ContentNegotiatingViewResolver

异常处理
  • @ExceptionHandler
  • HandlerExceptionResolver
    • ExceptionHandlerExceptionResolver
  • BasicErrorController (Spring Boot )
2. Web MVC REST
资源服务
  • @RequestMapping
    • @GetMapping
    • @PostMapping
  • @ResponseBody
  • @RequestBody
资源跨域
  • @CrossOrigin - 注解
  • WebMvcConfigurer # addCorsMappings - 接口
  • 传统解决方案
    • IFrame
    • jsonp
服务发现
  • HATEOS
Web MVC 核心
核心架构
处理流程
核心组件
  • DispatcherServlet
  • HandlerMapping
  • HandlerAdapter
  • ViewResolver
Spring Web Flux
Reactor基础
Java lambda
Mono
Flux
web Flux 核心
web MVC注解兼容
  • @Controller
  • @RequestMapping
  • @ResponseBody
  • @RequestBody
函数式声明
  • RouterFunction
异步非阻塞
  • Servlet 3.1+
  • Netty Reactor
使用场景
  • 页面渲染
  • Rest 应用
Web Server 应用
1. 切换webServer
切换其他Servlet容器
  • Tomcat->Jetty
<dependency>
	<groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <exclusions>
    	<exclusion>
        	<groupId>org.springframework.boot</groupId>
   		   <artifactId>spring-boot-starter-tomcat</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
	<groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jetty</artifactId>
</dependency>
替换Servlet容器
  • Tomcat-> WebFlux
<dependency>
	<groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
2. 自定义Servlet web server
  • WebServerFactoryCustomizer
3. 自定义ReactIve web server
  • ReactiveWebServerFactoryCustomizer

第五节:数据相关

关系型数据库
JDBC
依赖
<dependency>
	<groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
数据源
  • javax.sql.DataSource
JdbcTemplate
自动装配
  • DataSourceAutoConfiguration
JPA
依赖
<dependency>
	<groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
实体映射关系
  • @javax.persistence.OneToOne
  • @javax.persistence.OneToMany
  • @javax.persistence.ManyToOne
  • @javax.persistence.ManyToMany
实体操作
  • javax.persistence.EntityManager
自动装配
  • HibernateJpaAutoConfiguration
事务
依赖
<dependency>
	<groupId>org.springframework</groupId>
    <artifactId>spring-tx</artifactId>
</dependency>
Spring事务抽象
  • PlatFormTransactionManager
Jdbc事务处理
  • DataSourceTransactionManager
自动装配
  • TransactionAutoConfiguration

第六节:功能扩展

spring boot应用
SpringApplication
失败分析
  • FailurAnalysisReporter
应用特性
  • SpringApplication
事件监听等
spring boot 配置
外部化配置
  • ConfiguratioinProperty
@Profile
配置属性
  • PropertySources
spring boot starter
starter开发
最佳实践

第七节:运维管理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值