Spring Boot
2023-06-09 14:36:02 0 举报
AI智能生成
Spring Boot
作者其他创作
大纲/内容
特性总结
⭐ 自动配置
启动器
⭐ 嵌入式容器
⭐ 运维管理
初始化器
Web 应用
Web Servlet
Web Reactive
数据访问
功能扩展
脚手架工具
常用注解
自动装配
手动装配
模式注解
模块装配
Spring Framework
@EnableWebMvc(Web MVC)
@EnableTransactionManagement(事务管理)
@EnableCaching(缓存)
@EnableMBeanExport(JMX,Java 扩展管理)
@EnableAsync(异步处理)
@EnableAspectJAutoProxy(AspectJ 代理,AOP)
@EnableWebFlux(Web Flux)
......
Spring Boot
@EnableAutoConfiguration(自动装配)
@EnableManagementContext(运维监控)
@EnableConfigurationProperties(配置属性绑定)
@EnableOAuth2Sso(OAuth2 单点登录)
......
Spring Cloud
@EnableEurekaServer(注册中心服务器)
@EnableConfigServer(配置中心)
@EnableFeignClients(Feign 客户端)
@EnableZuulProxy(服务网关)
@EnableCircuitBreaker(服务熔断)
......
实现方式
注解驱动
实现接口
条件装配
配置化条件装配:@Profile
编程条件装配:@Conditional
自动装配
自定义自动装配
SpringApplication
基础技术
模式注解
应用上下文
工厂加载机制
初始化器
Environment 抽象
应用事件/监听器
故障分析
运行监听器
基本使用
核心注解:@SpringBootApplication
Bean 配置源:@Configuration
@SpringBootConfiguration
自动配置:@EnableAutoConfiguration
@AutoConfigurationImportSelector
SpringFactoriesLoader
XxxAutoConfiguration
组件扫描:@ComponentScan
TypeExcludeFilter
运行原理
准备阶段
核心配置
应用推断
推断应用类型
推断引导类
加载组件
加载应用上下文初始化器
加载应用上下文事件监听器
运行阶段
发布事件:开始启动
Spring 事件
创建并准备 Environment
打印 Banner(可扩展)
创建应用上下文
创建故障诊断分析器
初始化应用上下文
设置 Environment
遍历调用初始化器
发布事件:装载准备
装载 Bean
发布事件:装载完成
刷新应用上下文
遍历启动 XxxRunner
发布事件:启动完成
结束阶段
Web Servlet 应用
Servlet
核心组件
规范版本
处理流程
基本使用
生命周期
异步支持
Servlet 原生异步接口
DispatcherServlet 整合
DeferredResult
Callable
CompletionStage
Spring Boot 支持
嵌入式 Servlet 容器
Servlet 注册
通过 RegistrationBean 注册
通过 @Bean 注册
通过 @ServletComponentScan 注册
使用传统容器部署
1. 扩展 Servlet 初始化器
2. 启动类添加组件扫描
3. Maven 加入 Tomcat 插件依赖
4. 项目打包、启动
运维管理
健康检查:Health、HealthIndicator
数据指标:Metrics
端点管控:Web、JMX
数据访问
JDBC:数据源管理、JdbcTemplate
JPA:实体映射关系、实体操作
事务:Spring 事务抽象、JDBC 事务处理
功能扩展
失败分析:FailureAnalysisReporter
应用特性:Fluent API
事件监听
应用配置
外部化配置:ConfigurationProperty
Environment 抽象
生命周期
破坏性变更
配置属性:PropertySources
条件配置:@Profile
嵌入式容器
切换容器
Servlet Web 容器:Tomcat、Jetty、Undertow
Reactive Web 容器:Netty Web Server
自定义容器
初始化器
依赖管理
装配条件
装配顺序
Web Flux 应用
Reactor 开发模式:Java Lambda、Mono、Flux
Web Flux 核心:Web MVC 注解兼容、函数式声明、异步非阻塞支持
使用场景:优势及限制
Web MVC 应用
基本使用
1. 引入 Maven 依赖
2. 实现 Controller
3. 实现 JSP 页面
4. 配置 Spring MVC
5. 部署 DispatcherServlet
交互流程
核心组件
过滤器与拦截器
常用注解
注册模型属性:@ModelAttribute
读取请求头:@RequestHeader
读取 Cookie:@CookieValue
校验参数:@Valid、@Validated
注解处理:@ExceptionHandler
异常处理:@ControllerAdvice
自动装配
Servlet SPI:WebApplicationInitializer
Spring 适配:SpringServletContainerInitializer
编程驱动:AbstractDispatcherServletInitializer
注解驱动:AbstractAnnotationConfigDispatcherServletInitializer
Spring Boot 支持
完全自动装配
自动装配 DispatcherServlet :DispatcherServletAutoConfiguration
代替 @EnableWebMvc:WebMvcAutoConfiguration
Servlet 容器 :ServletWebServerFactoryAutoConfiguration
装配顺序
绝对顺序:@AutoConfigureOrder
相对顺序:@AutoConfigureAfter
装配条件
要求 Web 类型:Servlet
API 依赖:Servlet、Spring Web MVC
Bean 依赖:WebMvcConfigurationSupport
外部化配置
Web MVC 配置:WebMvcProperties
资源配置:ResourceProperties
视图应用
模板引擎
类别
Thymeleaf
Velocity
Freemarker
JSP
资源定位
渲染上下文
模板引擎
Spring 整合
内容协商
视图解析器:ContentNegotiatingViewResolver
策略管理器:ContentNegotiationConfigurer
配置策略
配置 Bean
配置对象
Bean:ContentNegotiationManager
FactoryBean:ContentNegotiationManagerFactoryBean
策略实现:ContentNegotiationStrategy
MediaType:FixedContentNegotiationStrategy
“Accept” 请求头:HeaderContentNegotiationStrategy
请求参数:ParameterContentNegotiationStrategy
路径扩展名:PathExtensionContentNegotiationStrategy
处理流程
配置策略
1. 内容协商配置器关联管理 FactoryBean
2. 配置器配置策略
3. 添加配置的策略到 FactoryBean
4. FactoryBean 创建内容协商管理器
5. 内容协商管理器关联内容协商视图解析器
6. 内容协商视图解析器关联对应的视图解析器 Bean
处理请求
1. DispatcherServlet 处理客户端请求
2. DispatherServlet 调用内容协商视图解析器
3. 内容协商视图解析器匹配策略解析视图
4. 返回请求结果
多视图处理
REST 应用
架构约束
统一接口
C/S 架构
无状态
可缓存
* 分层系统
* 按需代码
基本体现
通信协议:HTTP
资源识别:URI
数据格式:JSON
资源操作:GET、POST、PUT、DELETE
调用状态描述:HTTP 状态码
自描述信息
Content-Type
MIME-Type
Media-Type
......
超媒体
Spring 支持
注解驱动
内容协商
处理流程
核心组件
基本使用
自定义
消息转换器
参数分解器
返回值处理器
资源跨域
注解驱动
代码驱动
服务发现
0 条评论
下一页