Spring Boot2 特点
组件自动装配:规约大于配置,专注核心业务
外部化配置:一次构建、按需调配,到处运行
嵌入式容器:内置容器、无需部署、独立运行
Spring Boot Starter:简化依赖、按需装配、自我包含
Production-Ready:一站式运维、生态无缝整合
Spring Boot技术点
组件自动装配:模式注解、@Enable模块、条件装配、加载机制
外部化配置:Environment抽象、生命周期、破坏性变更
嵌入式容器:Servlet Web容器、Reactive Web容器
Spring Boot Starter:依赖管理、装配条件、装配顺序
production-Ready:健康检查、数据指标、@Endpoint组件
Spring Boot 与 Java EE规范
Web:Servlet(JSR-315、JSR-340)
SQL:JDBC(JSR-221)
数据校验:Bean Validation(JSR-303、JSR-349)
缓存:Java Caching API(JSR-107)
WebSockets:Java API for WebSocket(JSR-356)
Web Services:JAX-WS(JSR-224)
Java管理:JMX(JSR 3)
消息:JMS(JSR-914)
核心特性
Spring Boot 三大特性
- 组件自动装配:Web MVC、Web Flux、JDBC等
- 激活:@EnableAutoConfiguration
- 配置:/META-INF/spring.factories
- 实现:XXXAutoConfiguration
- 嵌入式Web容器
- Web Servlet:Tomcat、Jetty以及Undertow
- Web Reactive:Netty Web Server
- 生产准备特性
- 指标:/actuator/metrics 【CPU/内存/磁盘利用率等】
- 健康检查:/actuator/health 【磁盘等】
- 外部化配置:/actuator/configprops
Web应用
-
Servlet组件
-
Servlet
- 实现
- @WebServlet
- httpServlet
- 注册
- URL映射
- @WebServlet(urlPatterns = “/my/servlet”)
- 注册
- @ServletComponentScan(basePackages = “com.ice.springboot.diveinspringboot.web.servlet”)
- 实现
-
Filter
-
Listener
-
-
Servlet注册
- Servlet注解
- @ServletComponentScan
- @WebServlet
- @WebFilter
- @WebListener
- Spring Bean
- @Bean
- Servlet
- Filter
- Listener
- RegistrationBean
- ServletRegistrationBean
- FilterRegistrationBean
- ServletListenerRegistrationBean
- Servlet注解
-
异步非阻塞
-
异步Servlet:
- javax.servlet.ServletRequest#startAsync()
- javax.servlet.AsyncContext
-
非阻塞Servlet:
- javax.servlet.ServletInputStream#setReadListener
- javax.servlet.ReadListener
- javax.servlet.ServletOutputStream#setWriteListener
- javax.servlet.WriteListener
- javax.servlet.ServletInputStream#setReadListener
-
Web应用
Spring Web MVC应用
- Web MVC视图
- ViewResolver
- View
- 模板引擎
- Thymeleaf
- Freemarker
- jsp
- 内容协商
- ContentNegotiationConfigurer
- ContentNegotiationStrategy
- ContentNegotiationgViewResolver
- 异常处理
- @ExceptionHandler
- HandlerExceptionResolver
- ExceptionHandlerExceptionResolver
- BasicErrorController(spring boot)
Web MVC REST
- 资源服务
- @RequestMapping
- GetMapping
- @ResponseBody
- @RequestBody
- @RequestMapping
- 资源跨域
- CrossOrigin
- WebMvcConfigurer#addConfigurer#addCorsMappings
- 传统的解决方案 IFrame、JSONP
- 服务发现等
- HATEOS
Web MVC核心
- 核心架构
- 处理流程
- 核心组件
- DispatcherServlet
- HandlerMapping
- HandlerAdapter
- ViewResolver
Spring Web Flux应用
- Reactor基础:Java lambda、Mono、Flux
- Web Flux核心:Web MVC注解、函数式声明(RouterFunction)、异步非阻塞
- 使用场景:页面渲染、Rest应用
Web servlet 应用
- 切换容器:修改pom文件的依赖
- 替换servlet容器:web/webflux
数据相关
- 关系型数据
- JDBC依赖:pom引入依赖
- 数据源:javax.sql.DataSource
- 自动装配:DataSourceAutoConfiguration
功能扩展
- Spring boot 应用
- SpringApplication:失败分析、应用特性、事件监听等
- Spring Boot配置:外部化配置、Profile、配置属性
- Spring Boot Starter:Starter开发、最佳实践
运维管理:监控