课堂总结
主要内容
Spring Boot 核心特性
Spring Boot 功能应用
Spring Boot 运维管理
降龙十八掌 第十八式
运维管理
Spring Boot Actuator
端点:各类Web和JMX Endpoints
健康检查:Health、HealthIndicator
指标:内建Metrics、自定义Metrics
Spring Boot Actuator
依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
端点(Endpoints)
Web Endpoints
JMX Endpoints
健康检查(Health Checks)
Health
HealthIndicator
指标(Metrics)
内建Metrics
Web Endpoint:/actuator/metrics
自定义Metrics
功能扩展
Spring Boot 应用
SpringApplication:失败分析、应用特性、事件监听等
Spring Boot配置:外部化配置、Profile、配置属性
Spring Boot Starter:Starter开发、最佳实践
SpringApplication
失败分析
FailureAnalysisReporter
应用特性
SpringApplication Fluent API
Spring Boot配置
外部化配置
ConfigurationProperty
@Profile
配置属性
PropertySources
Spring Boot Starter
数据相关
关系型数据
JDBC:数据源、JdbcTemplate、自动装配
JPA:实体映射关系、实体操作、自动装配
事务:Spring事务抽象、JDBC事务处理、自动装配
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
事务(Transaction)
依赖
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
</dependency>
Spring事务抽象
platfromTransactionManager
JDBC事务处理
DataSourceTransactionManager
自动装配
TransactionAutoConfiguration
Web Server 应用
切换 Web Server
自定义 Servlet Web Server
自定义Reactive Web Server
Web Server应用
切换Web Server
切换其他Servlet容器
Tomcat->Jetty
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jetty</artifactId>
</dependency>
替换Servlet容器
WebFlux
注释调传统的web容器
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
//@ServletComponentScan(basePackages = "com.imooc.diveinspringboot.web.servlet")
Netty started on port(s):8080
自定义Servlet Web Server
WebServerFactoryCustomizer
自定义Reactive Web Server
ReactiveWebServerFactoryCustomizer
Web应用
Spring Web Flux 应用
Reactor基础:Java Lambda、Mono、Flux
Web Flux核心:Web MVC 注解、函数式声明、异步非阻塞
使用场景:Web Flux的优势和限制
Web应用
Spring Web MVC应用
Web MVC视图:模版引擎、内容协商、异常处理等
Web MVC REST:资源服务、资源跨域、服务发现等
Web MVC核心:核心架构、处理流程、核心组件
Web MVC 视图
ViewResolver
View
模板引擎
Thymeleaf
Freemarker
JSP
内容协商
ContentNegotiationConfigurer
ContentNegotiationStrategy
ContentNegotiatingViewResolver
异常处理
@ExceptionHandler
HandlerExceptionResolver
ExceptionHandlerExceptionResolver
BasicErrorController(Spring Boot)
Web MVC REST
资源服务
@RequestMapping
@GetMapping
@ResponseBody
@RequestBody
资源跨域
CrossOrigin
WebMvcConfiguration#addCorsMappings
传统解决方案
服务发现
Web MVC 核心
核心架构
处理流程
核心组件
DispatcherServlet
HandlerMapping
HandlerAdapter
ViewResolver
...
异步非阻塞
AsyncContext asyncContext=req.startAsync();
asyncContext.start(()->{
resp.getWriter().println("Hello,World");
//触发完成
asyncContext.complete();
});
@Webservlet(urlPatterns = "/my/servlet",asyncSupported=true)
Web应用
传统servlet应用
依赖
spring-boot-starter
...web
...json ...tomcat
Whitelabel Error page
Servlet组件
servlet
实现 @WebServlet HttpServlet
URL映射 @WebServlet(urlPatterns="/my/servlet")
注册 @ServletComponentScan(basePackages="com.imooc.diveinspringboot.web.servlet")
Filter
Listener
Web应用
传统Servlet应用
Servlet组件:Servlet、Filter、Listener
Servlet注册:Servlet注解、Spring Bean、RegistrationBean
异步非阻塞:异步Servlet、非阻塞Servlet
@SpringBootApplication
@EnableAutoConfiguration
spring.factories
WebMvcAutoConfiguration
嵌入式Web容器
Web Servlet:Tomcat ...
Web Reactive:Netty Web Server
生产准备特性
指标:/actuator/metrics
健康检查:/actuator/health
外部化配置:/actuator/configprops
核心特性
Spring Boot 三大特性
组件自动装配:Web MVC、Web Flux 、JDBC等
嵌入式Web容器:Tomcat、Jetty以及 Undertow
生产准备特性:指标、健康检查、外部化配置等
课程介绍
课程内容
核心特性
web应用
数据相关
功能扩展
运维管理
课堂总结
运维管理
功能扩展
关系型数据
Web Server
Spring 5 支持
对 Servlet 的补充
是 Web 应用从同步阻塞编程到异步非阻塞编程的一种转变,即编程模型的升级
Java Lambda 是 Reactor 的基础。
Reactor 是 Reactive Stream 的一种实现。其他的实现方式有 JDK 9 的 Flow API。
Spring Web MVC 应用的内容。
传统 Servlet 应用。
生产准备特性。
Web 容器的标准、实现,以及 Spring 给的解决方案。
画龙点睛之组件自动装配。
核心特性介绍。
课程内容。
难精的原因。
易学的原因。
Spring boot 概述
Spring Boot 核心特性
1:自动化装配
1。激活:@EnableAutoConfiguration
2.配置:META-INF/ spring.factories
3.实现:xxxAutoConfiguration
2:嵌入式web容器
1、Web Servlet :tomcat、jetty和Undertow
2、Web Reactive:Netty Web Server
3:生产准备特性
1、指标:/actuator/metrics(这个可以值cpu或者磁盘的利用率)
2、健康检查:/actuator/health
3、外部化配置:/actuator/configprops
设置Servlet异步方式,注意指定异步asyncSupported=true,以及手动触发异步完成 asyncContext.complete()