Core #
Spring Boot定义 #
Spring Boot is designed to get you up and running as quickly as possible, with minimal upfront configuration of Spring. Spring Boot takes an opinionated view of building production-ready applications.
Features (官方) #
- Create stand-alone Spring applications
- Embed Tomcat, Jetty or Undertow directly (no need to deploy WAR files)
- Provide opinionated ‘starter’ dependencies to simplify your build configuration
- Automatically configure Spring and 3rd party libraries whenever possible
- Provide production-ready features such as metrics, health checks, and externalized configuration
- Absolutely no code generation and no requirement for XML configuration
特性 #
-
自动配置 Auto Configuration 为Spring及第三方库提供自动配置; 简化了项目的构建配置;
- 无需生成代码或进行xml配置; 约定优于配置(Convention Over Configuration) CoC
-
Starter Dependency
-
Springboot CLI
-
内嵌的服务器 方便地创建可独立运行的Spring应用程序; 直接内嵌的Tomcat, Jetty或者Undertow;
-
生产级 提供生产级特性; Actuator(Runtime)
Auto Configuration #
底层装配技术 [3] #
-
Spring 模式注解装配
-
Spring @Enable 模块装配
// 组件
@EnableXXX
@Importer @ImportXXXSelector
@Conditional
@ConditionalOnClass
@ConditionalOnBean
...
// 开启自动配置
@EnableAutoConfiguration
@SpringBootApplication
- Spring 条件装配装配
// 实现原理 - 有条件的加载机制
@ConditionalOnClass
@ConditionalOnBean
@ConditionalOnMissingBean
@ConditionalOnProperty
...
- Spring 工厂加载机制
- 实现类: SpringFactoriesLoader
- 配置资源: META-INF/spring.factories
外部化配置加载顺序 #
...
命令行参数(--server.port=9000)
...
System.getProperties()
操作系统环境变量
...
jar包外的application-{profile}.properties 或 .yml
jar包内的application-{profile}.properties 或 .yml
jar包外的application.properties或 .yml
jar包内的application.properties或 .yml
Starter Dependency #
- 直接面向功能
- 官方Starters spring-boot-starter-*
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.0.RELEASE</version>
</parent>
<!-- 使用方 -->
<!-- 统一管理依赖 --><!-- spring cloud的依赖 -->
<dependencyManagement></dependencyManagement>
<!-- 定义方 -->
Bill of Materials - bom
BOM本质上是一个普通的POM文件
- 扩展自定义starter …
production-ready #
Actuator #
- 目的: 监控并管理应用程序
- 访问方式: HTTP, JMX
- 依赖: spring-boot-starter-actuator
Actuator Endpoint #
- http访问
/actuator/
- 端口与路径
- management.server.address=
- management.server.port=
内嵌的Web容器 #
可选容器列表 #
- spring-boot-starter-tomcat
- spring-boot-starter-jetty
- spring-boot-starter-undertow
- spring-boot-starter-reactor-netty
端口 #
- server.port
- server.address
压缩 #
Tomcat特性配置 #
- server.tomcat.max-connections=10000
- server.tomcat.max-http-post-size
- server.tomcat.max-threads
参考 #
- 《玩转Spring全家桶》 67, 68, 71, 73, 75, 79 丁雪峰 V
- 《黑马程序员SpringBoot教程,6小时快速入门Java微服务架构Spring Boot》 V
- 《mksz252 - Spring Boot 2.0深度实践之核心技术篇》 第2章 走向自动装配 V ***
- SpringBoot面试题 (史上最全、持续更新、吐血推荐) 尼恩 未
- spring + spring mvc + tomcat 面试题(史上最全) 尼恩 未
- SpringBoot 基础知识 核心知识 【收藏版】 尼恩 未