一、总览
SpringBoot 1.0是基于Servlet + JavaEE + springMVC
SpringBoot 2.0是基于Reactive + Netty,Servlet + Spring WebFlux, 非阻塞异步的方式
- 组件自动装配:模式注解、@Enable注解、条件装配、加载机制
- 外部化配置:Environment抽象、生命周期、破坏性变更
- 嵌入式容器:Servlet Web容器、Reactive Web容器(Netty)
- Spring Boot Starter:依赖管理、装配条件、装配顺序
- Production-Ready:健康检查、数据指标、@Endpoint管控
二、SpringBoot 3大核心特性
1、组件自动装配:Web MVC、Web Flux、JDBC等
- 激活:@EnableAutoConfigration
- 配置:/META-INFO/spring.factories(源信息的目录)
- 实现:XXXAutoConfigration
2、嵌入式Web容器:
- Web Servlet:Tomcat、Jetty等
- Web Reactive:Netty Web Server
3、生产准备的特性:
- 指标:/actuator/metrics,记录CPU、内存、磁盘等信息(web和JMX两种方式)
- 健康检查:/actuator/health
- 外部化配置:/actuator/configprops
三、Web应用
1、传统Servlet应用:
- Servlet组件:Servlet、Filter、Listener
- Servlet注册:Servlet注解、Spring Bean、RegistrationBean
Servlet实现:@WebServlet,extends HTTPServelet(重写doGet、doPost)
URL映射:@WebServlet(urlPatterns="/myservlet")
注册:@ServeltComponentScan="com.xxx.web.servelet" ,Servlet所在包路径扫描
- 异步非阻塞:异步Servlet、非阻塞Servlet
类注解开启异步支持:@WebServlet(urlPatterns="/myservlet,asyncSupported = true")
开启异步:AsyncContext asyncContext = req.startAsync(); // 异步的上下文
执行异步逻辑:asyncContext.start(()->{ Runnable() });
触发完成:asyncContext.complete();
2、Spring Web MVC:
- Web MVC视图:模板引擎(jsp、themleaf)、内容协商、异常处理(BasicErrorController)等
- Web MVC REST:资源服务(GetMapping),资源跨域(CrossOrigin)、服务发现(HATEOS)等
- Web MVC 核心:核心框架、处理流程、核心组件(DispatcherServlet、HeadlerMapping、HandlerAdepter、ViewResolver)
3、Spring Web Flux:
Reactor基础:Java Lambda、Mono、FLux
Web Flux核心:Web MVC注解、函数式声明(RouterFunction)、异步非阻塞
使用场景:Web Flux的优势和限制
4、关系型数据:
JDBC:数据源。JDBCTemplate、自动装配,pom:spring-boot-starter-jdbc
JPA:实体映射关系、实体操作、自动装配,pom:spring-boot-starter-data-jpa
事物:Spring事物抽象、JDBC事物处理、自动装配,pom:spring-tx
四、Spring Framework手动装配
五、SpringBoot自动装配