Spring Boot 参考指南
作者
Phillip Webb, Dave Syer, Josh Long, Stéphane Nicoll, Rob Winch, Andy Wilkinson, Marcel Overdijk, Christian Dupuis, Sébastien Deleuze, Michael Simons
1.5.6.RELEASE
Copyright © 2012-2017
文档可自己使用或发给别人,印刷或电子形式都可以,但必须包含版本声明,不可用来盈利。
目录
I. Spring Boot 文档
1. 关于文档
2. 获取帮助
3. 第一步
4. 使用Spring Boot
5. 了解Spring Boot的功能
6. 转移到生产环境
7. 高级主题
II. 入门
8. 介绍Spring Boot
9. 系统要求
9.1. Servlet容器
10. 安装 Spring Boot
10.1. Java开发人员的安装说明
10.1.1. Maven安装
10.1.2. Gradle安装
10.2. 安装 Spring Boot CLI
10.2.1. 手动安装
10.2.2. 用 SDKMAN!安装
10.2.3. OSX Homebrew 安装
10.2.4. MacPorts 安装
10.2.5. 命令行补全
10.2.6. 快速启动 Spring CLI 示例
10.3. Upgrading from an earlier version of Spring Boot
11. 开发你的第一个 Spring Boot 应用程序
11.1. 创建 POM文件
11.2. 添加类路径依赖关系
11.3. 写代码
11.3.1. @RestController 和 @RequestMapping 注解
11.3.2. @EnableAutoConfiguration 注解
11.3.3. main方法
11.4. 运行示例
11.5. 创建一个可执行jar
12. 接下来读什么
III. 使用 Spring Boot
13. 建立系统
13.1. 依赖管理
13.2. Maven
13.2.1. 继承 starter parent
13.2.2. 使用没有父POM的Spring Boot
13.2.3. 更改 Java版本
13.2.4. 使用Spring Boot Maven插件
13.3. Gradle
13.4. Ant
13.5. 启动器
14. 构建代码
14.1. 使用“default”包
14.2. 查找主应用程序类
15. 配置类
15.1. 导入其他配置类
15.2. 导入XML配置
16. 自动配置
16.1. 逐渐取代自动配置
16.2. 禁用指定的自动配置
17. Spring Beans 和依赖注入
18. 使用@SpringBootApplication注解
19. 运行你的应用程序
19.1. 在IDE中运行
19.2. 打包后运行
19.3. 使用 Maven插件
19.4. 使用Gradle插件
19.5. 热插拔
20. 开发工具
20.1. 属性默认值
20.2. 自动重启
20.2.1. 排除某些资源
20.2.2. 监视额外的路径
20.2.3. 禁用重新启动
20.2.4. 使用出发文件
20.2.5. 自定义重启的类加载器
20.2.6. 已知的限制
20.3. LiveReload
20.4. 全局设置
20.5. 运城应用程序
20.5.1. 运行远程客户端程序
20.5.2. 远程更新
20.5.3. 远程调试隧道
21. 打包你的生产环境应用程序
22. 接下来读什么
IV. Spring Boot功能
23. SpringApplication类
23.1. 启动失败
23.2. 自定义Banner
23.3. 定制SpringApplication
23.4. 流式构建API
23.5. 应用程序事件和监听器
23.6. Web环境
23.7. 访问应用程序参数
23.8. 使用 ApplicationRunner 或 CommandLineRunner
23.9. 应用程序退出
23.10. 管理功能
24. E外部配置
24.1. 配置随机值
24.2. 访问命令行属性
24.3. 应用程序配置文件
24.4. 配置文件特定属性
24.5. 配置文件中的占位符
24.6. 用YAML文件替代Properties文件
24.6.1. 加载 YAML
24.6.2. 用 YAML作为Spring环境的配置文件
24.6.3. 多个YAML文件
24.6.4. YAML的缺点
24.6.5. 合并YAML列表
24.7. 类型安全的配置属性
24.7.1. 第三方配置
24.7.2. 宽松绑定
24.7.3. 属性转换
24.7.4. @ConfigurationProperties验证
24.7.5. @ConfigurationProperties对比 @Value
25. 配置文件
25.1. 添加活动配置文件
25.2. 以编程方式配置文件
25.3. 指定的配置文件
26. 日志
26.1. 日志格式
26.2. 控制台输出
26.2.1. 彩色编码输出
26.3. 文件输出
26.4. 日志级别
26.5. 自定义日志配置
26.6. 日志扩展
26.6.1. 指定配置文件配置
26.6.2. 环境属性
27. 开发web应用程序
27.1. Spring Web MVC framework
27.1.1. Spring MVC 自动配置
27.1.2. HttpMessageConverters
27.1.3. 自定义JSON 序列化和反序列化
27.1.4. MessageCodesResolver
27.1.5. 静态内容
27.1.6. 自定义图标
27.1.7. ConfigurableWebBindingInitializer
27.1.8. 模板引擎
27.1.9. 错误处理
自定义错误页面
映射Spring MVC以外的错误页面
WebSphere Application Server的错误处理
27.1.10. Spring HATEOAS
27.1.11. CORS支持
27.2. JAX-RS 和 Jersey
27.3. 嵌入式servlet容器支持
27.3.1. Servlets, 过滤器, 和监听器
Servlets筛选器, 过滤器, 和Spring beans监听器
27.3.2. Servlet 上下文初始化
Servlets, 过滤器, 和监听器
27.3.3. EmbeddedWebApplicationContext
27.3.4. 定制嵌入式servlet容器
程序定制
直接自定义ConfigurableEmbeddedServletContainer
27.3.5. JSP限制
28. 安全
28.1. OAuth2
28.1.1. 授权服务器
28.1.2. 资源服务器
28.2. 用户信息中令牌类型
28.3. 自定义用户信息RestTemplate
28.3.1. 客户端
28.3.2. 单点登录
28.4. 执行安全
29. 使用SQL数据库
29.1. 配置一个数据源
29.1.1. 嵌入式数据库支持
29.1.2. 连接到生产环境数据库
29.1.3. 连接到一个JNDI数据源
29.2. 使用JdbcTemplate
29.3. JPA 和‘Spring Data’
29.3.1. 实体类
29.3.2. Spring Data JPA Repositories
29.3.3. 创建和删除JPA数据库
29.3.4. 在View中打开EntityManager
29.4. 使用H2的web控制台
29.4.1. 修改H2的控制台路径
29.4.2. 保护H2控制台
29.5. 使用jOOQ
29.5.1. 代码生成
29.5.2. 使用DSLContext
29.5.3. 定制jOOQ
30. 使用NoSQL技术
30.1. Redis
30.1.1. 连接到Redis
30.2. MongoDB
30.2.1. 连接到MongoDB数据库
30.2.2. MongoTemplate
30.2.3. Spring Data MongoDB仓库
30.2.4. 嵌入Mongo
30.3. Neo4j
30.3.1. 连接到一个Neo4j数据库
30.3.2. 使用嵌入式模式
30.3.3. Neo4jSession
30.3.4. Spring Data Neo4j仓库
30.3.5. 仓库示例
30.4. Gemfire
30.5. Solr
30.5.1. 连接到Solr
30.5.2. Spring Data Solr仓库
30.6. Elasticsearch
30.6.1. 用Jest连接到Elasticsearch
30.6.2. 使用Spring Data连接到Elasticsearch
30.6.3. Spring Data Elasticsearch仓库
30.7. Cassandra
30.7.1. 连接到Cassandra
30.7.2. Spring Data Cassandra仓库
30.8. Couchbase
30.8.1. 连接到Couchbase
30.8.2. Spring Data Couchbase仓库
30.9. LDAP
30.9.1. 连接到一台LDAP 服务器
30.9.2. Spring Data LDAP仓库
30.9.3. 嵌入式内存中的LDAP服务器
31. 缓存
31.1. 支持缓存的提供程序
31.1.1. Generic
31.1.2. JCache (JSR-107)
31.1.3. EhCache 2.x
31.1.4. Hazelcast
31.1.5. Infinispan
31.1.6. Couchbase
31.1.7. Redis
31.1.8. Caffeine
31.1.9. Guava (deprecated)
31.1.10. Simple
31.1.11. None
32. 消息传递
32.1. JMS
32.1.1. ActiveMQ支持
32.1.2. Artemis支持
32.1.3. 使用JNDI ConnectionFactory
32.1.4. 发送消息
32.1.5. 接收消息
32.2. AMQP
32.2.1. RabbitMQ支持
32.2.2. 发送消息
32.2.3. 接收消息
32.3. Apache Kafka支持
32.3.1. 发送消息
32.3.2. 接收消息
32.3.3. 额外 Kafka属性
33. 调用REST服务
33.1. RestTemplate定制
34. 验证
35. 发送电子邮件
36. JTA分布式事务
36.1. 使用Atomikos事务管理器
36.2. 使用Bitronix 事务管理器
36.3. 使用Narayana事务管理器
36.4. 使用Java EE管理的事务管理器
36.5. 混合XA 和 non-XA JMS连接
36.6. 支持可选的嵌入式事务管理器
37. Hazelcast
38. Spring集成
39. Spring Session
40. JMX监督管理
41. 测试
41.1. 测试范围的依赖
41.2. 测试Spring应用程序
41.3. 测试 Spring Boot应用程序
41.3.1. 检测测试配置
41.3.2. 排除测试配置
41.3.3. 使用随机端口
41.3.4. MockBean和SpyBean
41.3.5. 自动配置测试
41.3.6. 自动配置的JSON测试
41.3.7. 自动配置的Spring MVC测试
41.3.8. 自动配置的Data JPA测试
41.3.9. 自动配置的 JDBC测试
41.3.10. 自动配置 Data MongoDB测试
41.3.11. 自动配置 REST客户端
41.3.12. 自动配置的Spring REST文档测试
41.3.13. 使用Spock来测试Spring Boot应用程序
41.4. 测试工具
41.4.1. ConfigFileApplicationContextInitializer
41.4.2. EnvironmentTestUtils
41.4.3. OutputCapture
41.4.4. TestRestTemplate
42. WebSockets
43. Web Services
44. 创建自己的自动配置
44.1. 了解自动配置beans
44.2. 查找自动配置候选
44.3. 条件注入
44.3.1. Class条件
44.3.2. Bean 条件
44.3.3. Property 条件
44.3.4. Resource 条件
44.3.5. Web 应用程序条件
44.3.6. SpEL表达式条件
44.4. 创建自己的启动器
44.4.1. 命名
44.4.2. 自动配置模块
44.4.3. 启动器模块
45. 接下来读什么
V. Spring Boot Actuator: 生产就绪功能
46. 启用生产就绪功能
47. 端点
47.1. 自定义端点
47.2. Hypermedia for actuator MVC端点
47.3. CORS 支持
47.4. 添加自定义端点
47.5. 健康信息
47.6. 安全健康指标
47.6.1. 自动配置安全健康指标
47.6.2. 编写自定义安全健康指标
47.7. 应用信息
47.7.1. 自动配置InfoContributors
47.7.2. 自定义应用信息的说明
47.7.3. Git提交信息
47.7.4. 构建信息
47.7.5. 编写自定义InfoContributors
48. 通过HTTP进行监控和管理
48.1. 访问敏感端点
48.2. 自定义管理端点路径
48.3. 自定义管理服务器端口
48.4. 配置指定管理的SSL
48.5. 自定义管理服务器地址
48.6. 禁用HTTP端点
48.7. HTTP健康端点格式和访问限制
49. 监测和管理JMX
49.1. 自定义MBean名称
49.2. 禁用JMX端点
49.3. 通过HTTP使用Jolokia for JMX
49.3.1. 自定义Jolokia
49.3.2. 禁用Jolokia
50. 使用远程shell进行见识和管理(不建议使用)
50.1. 链接到远程shell
50.1.1. 远程shell凭据
50.2. 扩展远程shell
50.2.1. 远程shell命令
50.2.2. 远程shell插件
51. Loggers
51.1. 配置一个Logger
52. 指标
52.1. 系统指标
52.2. 数据源指标
52.3. 缓存指标
52.4. Tomcat session指标
52.5. 记录自己的指标
52.6. 添加自己的公共指标
52.7. Java8的特色功能
52.8. Metric writers, exporters 和 aggregation
52.8.1. 示例: 导出到Redis
52.8.2. 示例: 导出到Open TSDB
52.8.3. 示例: 导出到Statsd
52.8.4. 示例: 导出到JMX
52.9. 聚合来自多个源的指标
52.10. Dropwizard指标
52.11. 消息渠道集成
53. 审计
54. 跟踪
54.1. Custom tracing
55. 进程监控Process monitoring
55.1. 扩展配置
55.2. 变成方式
56. Cloud Foundry支持
56.1. 禁用扩展的Cloud Foundry执行器支持
56.2. Cloud Foundry自签名证书
56.3. 自定义安全配置
57. 接下来读什么
VI. 部署Spring Boot程序
58. 部署到云端
58.1. Cloud Foundry
58.1.1. 绑定服务
58.2. Heroku
58.3. OpenShift
58.4. Amazon Web Services (AWS)
58.4.1. AWS Elastic Beanstalk
使用Tomcat平台
使用Java SE平台
最佳做法
58.4.2. 概要
58.5. Boxfuse 和 Amazon Web Services
58.6. Google Cloud
59. 安装 Spring Boot应用程序
59.1. 支持的操作系统
59.2. Unix/Linux服务
59.2.1. 作为init.d服务安装(System V)
保护init.d服务
59.2.2. 作为系统服务安装
59.2.3. 自定义启动脚本
编写脚本时自定义脚本
自定义运行脚本
59.3. Microsoft Windows服务
60. 接下来读什么
VII. Spring Boot CLI
61. 安装 CLI
62. 使用 CLI
62.1. 使用 CLI运行应用程序
62.1.1. Deduced “grab” dependencies
62.1.2. Deduced “grab” coordinates
62.1.3. 默认导入语句
62.1.4. 自动主方法
62.1.5. 自定义依赖管理
62.2. 测试代码
62.3. 具有多个源文件的应用程序
62.4. 打包你的应用程序
62.5. 初始化一个新项目
62.6. 使用嵌入式shell
62.7. 添加CLI的扩展
63. 使用Groovy beans DSL开发应用程序
64. 使用settings.xml配置CLI
65. 接下来读什么
VIII. 构建工具插件
66. Spring Boot Maven插件
66.1. 包括插件
66.2. 打包出可执行的jar 和 war文件
67. Spring Boot Gradle 插件
67.1. 包括插件
67.2. Gradle依赖管理
67.3. 打包出可执行的jar 和war文件
67.4. 直接运行项目
67.5. Spring Boot 插件配置
67.6. 重新打包配置
67.7. 使用自定义Gradle配置重新打包
67.7.1. 配置选项
67.7.2. 可用布局
67.7.3. 使用自定义布局
67.8. 了解Gradle插件的工作原理
67.9. 使用Gradle发布到Maven仓库
67.9.1. 配置Gradle来生成继承依赖关系管理的pom
67.9.2. 配置Gradle来生成导入依赖管理管理的pom
68. Spring Boot AntLib模块
68.1. Spring Boot Ant 任务
68.1.1. spring-boot:exejar
68.1.2. 示例
68.2. spring-boot:findmainclass
68.2.1. 示例
69. 支持其他构建系统
69.1. 重新打包档案文件
69.2. 嵌套库
69.3. 查询主类
69.4. 重新包装实现示例
70. 接下来读什么
IX. ‘如何’指导
71. Spring Boot应用程序
71.1. 创建你自己的FailureAnalyzer
71.2. 排除自动配置故障
71.3. 在开始之前自定义环境或ApplicationContext
71.4. 构建一个ApplicationContext层次结构(添加父或上下文)
71.5. 创建非web应用程序
72. 属性和配置
72.1. 构建时自动展开属性
72.1.1. 使用Maven自动扩展属性
72.1.2. 使用Gradle自动扩展属性
72.2. 使SpringApplication的配置可外部配置
72.3. 更改应用程序的外部属性的位置
72.4. 使用‘short’命令行参数
72.5. 使用YAML作为外部属性
72.6. 设置活动的Spring配置文件
72.7. 根据环境更改配置
72.8. 发现外部属性的内置选项
73. 嵌入式servlet容器
73.1. 将Servlet, 过滤器或监听器添加到应用程序
73.1.1. 使用Spring bean添加一个Servlet, Filter or Listener
禁用注册一个Servlet or Filter
73.1.2. 使用类路径扫描添加Servlets, Filters, and Listeners
73.2. 更改HTTP端口
73.3. 使用未分配的随机HTTP端口
73.4. 运行时发现HTTP端口
73.5. 配置SSL
73.6. 配置访问日志
73.7. 用在前端代理服务器之后
73.7.1. 自定义Tomcat代理配置
73.8. 配置Tomcat
73.9. 使用Tomcat启用多个连接器
73.10. 使用Tomcat的LegacyCookieProcessor
73.11. 使用Jetty
73.12. 配置Jetty
73.13. 使用Undertow
73.14. 配置 Undertow
73.15. 使用Undertow启用多个监听器
73.16. 使用Tomcat 7.x 或 8.0
73.16.1. 使用Tomcat 7.x 或 8.0 与 Maven
73.16.2. 使用Tomcat 7.x or 8.0 与 Gradle
73.17. 使用 Jetty 9.2
73.17.1. 使用 Jetty 9.2 与 Maven
73.17.2. 使用 Jetty 9.2 与 Gradle
73.18. 使用 Jetty 8
73.18.1. 使用Jetty 8 与 Maven
73.18.2. 使用Jetty 8 与 Gradle
73.19. 用@ServerEndpoint创建 WebSocket端点
73.20. 启用HTTP响应亚索
74. Spring MVC
74.1. 写一个JSONREST服务
74.2. 写一个 XML REST服务
74.3. 自定义Jackson ObjectMapper
74.4. 自定义@ResponseBody渲染
74.5. 处理多文件上传
74.6. 关闭Spring MVC DispatcherServlet
74.7. 关闭默认的MVC配置
74.8. 自定义ViewResolvers
74.9. 使用Thymeleaf 3
75. HTTP客户端
75.1. 用代理配置RestTemplate
76. 日志
76.1. 配置Logback进行日志记录
76.1.1. 配置logback只输出到文件
76.2. 配置Log4j进行日志记录
76.2.1. 使用YAML 或 JSON配置Log4j 2
77. 数据访问
77.1. 配置自定义数据源
77.2. 配置两个数据源
77.3. 使用Spring Data仓库
77.4. 从Spring配置中分离@Entity定义
77.5. 配置JPA属性
77.6. 配置Hibernate命名策略
77.7. 使用自定义的EntityManagerFactory
77.8. 使用两个EntityManagers
77.9. 使用传统的persistence.xml
77.10. 使用Spring Data JPA 和 Mongo仓库
77.11. 将Spring Data仓库作为REST端点
77.12. 配置JPA使用的组件
78. 数据库初始化
78.1. 使用JPA
78.2. 使用Hibernate
78.3. 使用Spring JDBC
78.4. 初始化一个Spring Batch数据库
78.5. 使用更高级别的数据库迁移工具
78.5.1. 启动时执行Flyway数据库迁移
78.5.2. 启动时执行Liquibase数据库迁移
79. 消息传递
79.1. 禁用事务的JMS session
80. 批处理
80.1. 启动时执行Spring Batch工作
81. Actuator
81.1. 更改执行端的HTTP 端口或地址
81.2. 自定义‘白名单’的错误页面
81.3. Actuator 和 Jersey
82. 安全
82.1. 关闭Spring Boot的安全配置
82.2. 改变AuthenticationManager并添加用户账号
82.3. 代理服务器运行时启用HTTPS
83. 热插拔
83.1. 重载静态内容
83.2. 重载模板而不重启容器
83.2.1. Thymeleaf模板
83.2.2. FreeMarker 模板
83.2.3. Groovy模板
83.3. 快速重启应用程序
83.4. 重载Java类而不重启容器
83.4.1. 用Maven配置Spring加载 for use with Maven
83.4.2. 用Gradle and IntelliJ IDE配置Spring加载
84. 构建
84.1. 生成构建信息
84.2. 生成git信息
84.3. 自定义依赖关系版本
84.4. 用Maven创建可执行JAR
84.5. 用Spring Boot应用程序作为依赖关系
84.6. 提取可执行jar运行所需的依赖库
84.7. 排除创建一个不可执行的JAR
84.8. 远程调试从Maven开始的Spring Boot程序
84.9. 远程调试从Gradle开始的 Spring Boot程序
84.10. 用Ant而不用spring-boot-antlib构建一个可执行存档
84.11. 如何使用Java6
84.11.1. 嵌入式servlet的兼容性
84.11.2. Jackson
84.11.3. JTA API兼容性
85. 传统部署
85.1. 创建一个可部署的war文件
85.2. 创建一个适用旧版servlet容器的war文件
85.3. 将现有的应用程序转换尉Spring Boot
85.4. 将WAR部署到WebLogic
85.5. 在旧容器(Servlet 2.5)中部署war