春季启动参考指南
2.1.3.RELEASE
菲利普·韦伯,戴夫Syer,约什长,斯特凡尼科尔,罗布绞车,安迪·威尔金森,马塞尔Overdijk,基督教
杜普伊斯,塞巴斯蒂安德勒兹,迈克尔·西蒙斯,韦德兰PAVI#,周杰伦科比,Madhura巴维
版权所有©2012年至2018年
本文件的副本可用于自己使用和分发进行到别人,只要你不收取任何费用的拷贝和还进一步规定,每个副本都包含此版权声明,
无论是分布在印刷或电子。
目录
春季启动参考指南
I. 春季启动文档 ....................................................................................................................................... 1
1. 关于本文档 ................................................................................................................................. 2
2. 获得帮助 ..................................................................................................................................... 3
3. 第一步 ........................................................................................................................................ 4
4. 与Spring引导工作 ..................................................................................................................... 五
5. 学习关于Spring引导功能 ............................................................................................................ 6
6. 移动到生产 ................................................................................................................................. 7
7. 高级主题 ..................................................................................................................................... 8
II. 入门 ..................................................................................................................................................... 9
8. 春介绍开机 ............................................................................................................................... 10
9. 系统要求 ................................................................................................................................... 11
9.1. Servlet容器 ................................................................................................................... 11
10. 安装弹簧引导 .......................................................................................................................... 12
10.1. 安装说明Java开发 ...................................................................................................... 12
Maven安装 .................................................................................................................. 12
安装摇篮 ...................................................................................................................... 13
10.2. 安装弹簧引导CLI ........................................................................................................ 13
手动安装 ...................................................................................................................... 13
安装与SDKMAN! ...................................................................................................... 14
OSX家酿安装 .............................................................................................................. 14
MacPorts的安装 .......................................................................................................... 15
命令行补全 .................................................................................................................. 15
窗户安装炒到 ............................................................................................................... 15
快速启动春季CLI示例 .................................................................................................. 15
10.3. 从春天启动的早期版本升级 ........................................................................................ 16
11. 开发你的第一个春天引导应用程序 ......................................................................................... 17
11.1. 创建POM .................................................................................................................... 17
11.2. 添加路径依赖 .............................................................................................................. 18
11.3. 编写代码 ..................................................................................................................... 18
该@RestController和@RequestMapping注解 ............................................................ 19
该@EnableAutoConfiguration注解.............................................................................. 19
“主”方法 ....................................................................................................................... 19
11.4. 运行示例 ..................................................................................................................... 19
11.5. 创建可执行的JAR ....................................................................................................... 20
12. 读什么书下一页 ...................................................................................................................... 22
III. 使用Spring启动 ................................................................................................................................ 23
13. 构建系统 ................................................................................................................................. 24
13.1. 依赖管理 ..................................................................................................................... 24
13.2. Maven的 ..................................................................................................................... 24
传承入门父 .................................................................................................................. 25
使用Spring开机无父POM ............................................................................................ 25
使用Spring引导Maven插件 ......................................................................................... 26
13.3. 摇篮 ............................................................................................................................ 26
2.1.3.RELEASE
春季启动
ii
春季启动参考指南
13.4. 蚂蚁 ............................................................................................................................ 26
13.5. 首发 ............................................................................................................................ 27
14. 构建你的代码 .......................................................................................................................... 33
14.1. 使用“默认”包 ............................................................................................................... 33
14.2. 定位主应用程序类 ....................................................................................................... 33
15. 配置类 .................................................................................................................................... 35
15.1. 导入其他配置类 .......................................................................................................... 35
15.2. 导入XML配置 .............................................................................................................. 35
16. 自动配置 ................................................................................................................................. 36
16.1. 逐步取代自动配置 ....................................................................................................... 36
16.2. 禁用特定的自动配置类 ................................................................................................ 36
17. 春天豆类和依赖注入 ............................................................................................................... 37
18. 使用@SpringBootApplication注解 .......................................................................................... 38
19. 运行应用程序 .......................................................................................................................... 40
19.1. 从IDE运行 ................................................................................................................... 40
19.2. 运行作为一个打包的应用程序 ..................................................................................... 40
19.3. 使用Maven插件 .......................................................................................................... 40
19.4. 使用插件摇篮 .............................................................................................................. 41
19.5. 热插拔 ......................................................................................................................... 41
20. 开发者工具 ............................................................................................................................. 42
20.1. 属性默认 ..................................................................................................................... 42
20.2. 自动重新启动 .............................................................................................................. 43
在条件评价记录变化 .................................................................................................... 44
排除资源 ...................................................................................................................... 44
看着其他路径 ............................................................................................................... 45
禁用重新启动 ............................................................................................................... 45
使用触发器文件 ........................................................................................................... 45
自定义类加载器重新启动 ............................................................................................ 45
已知限制 ...................................................................................................................... 46
20.3. LiveReload ................................................................................................................. 46
20.4. 全局设置 ..................................................................................................................... 46
20.5. 远程应用程序 .............................................................................................................. 47
运行远程客户端应用程序 ............................................................................................ 47
远程更新 ...................................................................................................................... 48
21. 打包用于生产中的应用 ........................................................................................................... 49
22. 读什么书下一页 ...................................................................................................................... 50
IV. 春天引导功能 ................................................................................................................................... 51
23. SpringApplication ................................................................................................................... 52
23.1. 启动故障 ..................................................................................................................... 52
23.2. 定制横幅 ..................................................................................................................... 53
23.3. 定制SpringApplication ................................................................................................ 54
23.4. 流利的生成器API ........................................................................................................ 54
23.5. 应用程序事件和监听器 ............................................................................................... 55
23.6. 网络环境 ..................................................................................................................... 56
23.7. 访问应用程序参数 ....................................................................................................... 56
2.1.3.RELEASE
春季启动
iii
春季启动参考指南
23.8. 使用ApplicationRunner或CommandLineRunner ........................................................ 57
23.9. 申请退出 ..................................................................................................................... 57
23.10. 管理功能 ................................................................................................................... 58
24. 外部配置 ................................................................................................................................. 59
24.1. 配置随机值 .................................................................................................................. 60
24.2. 访问命令行属性 .......................................................................................................... 60
24.3. 应用属性文件 .............................................................................................................. 61
24.4. 具体的配置文件的属性 ............................................................................................... 62
24.5. 在属性占位符 .............................................................................................................. 63
24.6. 加密属性 ..................................................................................................................... 63
24.7. 使用YAML而不是属性 ................................................................................................ 63
加载YAML ................................................................................................................... 64
揭露YAML作为春季环境属性 ...................................................................................... 64
多协议YAML文件 ........................................................................................................ 64
YAML缺点 ................................................................................................................... 65
24.8. 类型安全配置属性 ....................................................................................................... 66
第三方配置 .................................................................................................................. 69
轻松绑定 ...................................................................................................................... 69
合并复杂类型 ............................................................................................................... 71
属性转换 ...................................................................................................................... 72
转换持续时间 ...................................................................................................... 72
转换的数据大小 .................................................................................................. 74
@ConfigurationProperties验证 ................................................................................... 75
@ConfigurationProperties与@Value .......................................................................... 76
25. 简介 ........................................................................................................................................ 77
25.1. 添加活动简介 .............................................................................................................. 77
25.2. 编程设置的配置文件 ................................................................................................... 78
25.3. 简介专用配置文件 ....................................................................................................... 78
26. 记录 ........................................................................................................................................ 79
26.1. 日志格式 ..................................................................................................................... 79
26.2. 控制台输出 ................................................................................................................. 79
颜色编码输出 ............................................................................................................... 80
26.3. 文件输出 ..................................................................................................................... 81
26.4. 日志级别 ..................................................................................................................... 81
26.5. 日志组 ......................................................................................................................... 82
26.6. 自定义日志配置 .......................................................................................................... 82
26.7. 的logback扩展 ............................................................................................................ 84
具体配置文件配置 ....................................................................................................... 85
环境属性 ...................................................................................................................... 85
27. 国际化 .................................................................................................................................... 86
28. JSON ...................................................................................................................................... 87
28.1. 杰克逊 ......................................................................................................................... 87
28.2. GSON ......................................................................................................................... 87
28.3. JSON-B ...................................................................................................................... 87
29. 开发Web应用程序 .................................................................................................................. 88
2.1.3.RELEASE
春季启动
iv
春季启动参考指南
29.1. “春天Web MVC框架” .................................................................................................. 88
Spring MVC的自动配置 ............................................................................................... 88
HttpMessageConverters ............................................................................................. 89
自定义JSON序列化及解串器 ...................................................................................... 89
MessageCodesResolver的信息 .................................................................................. 90
静态内容 ...................................................................................................................... 90
欢迎页面 ...................................................................................................................... 92
自定义网站图标 ........................................................................................................... 92
路径匹配和内容协商 .................................................................................................... 92
ConfigurableWebBindingInitializer .............................................................................. 92
模板引擎 ...................................................................................................................... 93
错误处理 ...................................................................................................................... 93
自定义错误页 ...................................................................................................... 94
Spring MVC的外映射错误页面 ........................................................................... 95
春天HATEOAS ............................................................................................................ 95
CORS支持 ................................................................................................................... 96
29.2. “春WebFlux框架” ........................................................................................................ 96
春天WebFlux自动配置 ................................................................................................ 97
HTTP编码解码器HttpMessageReaders和HttpMessageWriters ................................. 98
静态内容 ...................................................................................................................... 98
模板引擎 ...................................................................................................................... 99
错误处理 ...................................................................................................................... 99
自定义错误页 .................................................................................................... 100
网络过滤器 ................................................................................................................ 100
29.3. JAX-RS和泽西 .......................................................................................................... 100
29.4. 嵌入式Servlet容器支持 ............................................................................................. 101
Servlet,过滤器和监听器 .......................................................................................... 102
注册Servlet,过滤器和监听器作为春豆 ............................................................ 102
Servlet上下文初始化 ................................................................................................. 102
扫描Servlet,过滤器和监听器 .......................................................................... 103
该ServletWebServerApplicationContext ................................................................... 103
定制嵌入式Servlet容器 .............................................................................................. 103
程序化定制........................................................................................................ 104
定制ConfigurableServletWebServerFactory直接 ............................................. 104
JSP限制 .................................................................................................................... 105
29.5. 嵌入式无服务器支持 ................................................................................................. 105
29.6. 无服务器资源配置 ..................................................................................................... 105
30. 安全 ...................................................................................................................................... 106
30.1. MVC安全 .................................................................................................................. 106
30.2. WebFlux安全 ............................................................................................................ 107
30.3. 的OAuth2 .................................................................................................................. 107
客户 ........................................................................................................................... 107
共同提供商OAuth2用户端的注册...................................................................... 108
资源服务器 ................................................................................................................ 109
授权服务器 ................................................................................................................ 109
2.1.3.RELEASE
春季启动
v
春季启动参考指南
30.4. 执行器安全 ............................................................................................................... 109
跨站请求伪造保护 ..................................................................................................... 109
31. 使用SQL数据库 .................................................................................................................... 111
31.1. 配置一个DataSource ................................................................................................ 111
嵌入式数据库支持 ..................................................................................................... 111
连接到生产数据库 ..................................................................................................... 112
连接到一个JNDI数据源 ............................................................................................. 113
31.2. 使用的JdbcTemplate ................................................................................................ 113
31.3. JPA和Spring数据JPA ............................................................................................... 114
实体类 ....................................................................................................................... 114
春天JPA的数据存储库 ............................................................................................... 115
创建和删除JPA数据库 ............................................................................................... 116
在视图中打开的EntityManager .................................................................................. 116
31.4. 春天JDBC数据 .......................................................................................................... 116
31.5. 使用H2的Web控制台 ................................................................................................ 117
改变H2控制台的路径 ................................................................................................. 117
31.6. 使用jOOQ ................................................................................................................. 117
代码生成 .................................................................................................................... 117
使用DSLContext ........................................................................................................ 118
jOOQ SQL方言 .......................................................................................................... 118
定制jOOQ .................................................................................................................. 118
32. 与NoSQL的技术方面的工作 ................................................................................................. 120
32.1. Redis的 ..................................................................................................................... 120
连接到Redis的 ........................................................................................................... 120
32.2. MongoDB的 .............................................................................................................. 121
连接到MongoDB数据库 ............................................................................................ 121
MongoTemplate ........................................................................................................ 122
春天MongoDB的数据存储库 ..................................................................................... 122
嵌入式蒙戈 ................................................................................................................ 123
32.3。Neo4j的 ................................................................................................................... 123
连接到数据库的Neo4j................................................................................................ 123
使用嵌入式模式 ......................................................................................................... 124
Neo4jSession ............................................................................................................ 124
春季数据的Neo4j库 ................................................................................................... 124
32.4. 的GemFire ................................................................................................................ 125
32.5. Solr的 ....................................................................................................................... 125
连接到Solr ................................................................................................................. 125
春天的数据存储库的Solr ........................................................................................... 125
32.6. Elasticsearch ............................................................................................................ 126
通过REST客户端连接到Elasticsearch ...................................................................... 126
利用玩笑连接到Elasticsearch ................................................................................... 126
通过使用Spring的数据连接到Elasticsearch .............................................................. 127
春季数据Elasticsearch库 ........................................................................................... 127
32.7. 卡桑德拉 ................................................................................................................... 127
连接到卡桑德拉 ......................................................................................................... 128
2.1.3.RELEASE
春季启动
vi
春季启动参考指南
春季数据卡桑德拉库 .................................................................................................. 128
32.8. Couchbase ............................................................................................................... 128
连接到Couchbase ..................................................................................................... 128
春季数据Couchbase库 .............................................................................................. 129
32.9. LDAP ........................................................................................................................ 130
连接到LDAP服务器 ................................................................................................... 130
春季数据LDAP存储库................................................................................................ 130
嵌入内存LDAP服务器................................................................................................ 131
32.10. InfluxDB .................................................................................................................. 131
连接到InfluxDB .......................................................................................................... 131
33. 高速缓存 ............................................................................................................................... 132
33.1. 支持的缓存提供 ........................................................................................................ 133
通用 ........................................................................................................................... 134
的JCache(JSR-107) ............................................................................................. 134
2.X的EHCache .......................................................................................................... 135
Hazelcast .................................................................................................................. 135
Infinispan的 ............................................................................................................... 135
Couchbase ................................................................................................................ 135
Redis的 ..................................................................................................................... 136
咖啡因 ....................................................................................................................... 136
简单 ........................................................................................................................... 137
没有 ........................................................................................................................... 137
34. 消息 ...................................................................................................................................... 138
34.1。JMS ......................................................................................................................... 138
ActiveMQ的支持 ........................................................................................................ 138
阿蒂米斯支持 ............................................................................................................. 139
使用JNDI连接工厂 ..................................................................................................... 140
发送消息 .................................................................................................................... 140
接收消息 .................................................................................................................... 140
34.2. AMQP ....................................................................................................................... 141
RabbitMQ的支持 ....................................................................................................... 141
发送消息 .................................................................................................................... 142
接收消息 .................................................................................................................... 143
34.3. Apache的卡夫卡支持 ................................................................................................ 144
发送消息 .................................................................................................................... 144
接收消息 .................................................................................................................... 145
卡夫卡流 .................................................................................................................... 145
附加属性卡夫卡 ......................................................................................................... 146
35. 与调用REST RestTemplate服务 ......................................... 147
35.1. RestTemplate定制 .................................................................................................... 147
36. 调用REST服务与Web客户端 ........................................... 149
36.1. Web客户端运行时 .................................................................................................... 149
36.2. Web客户端定制 ........................................................................................................ 149
37. 验证 ...................................................................................................................................... 151
38. 发送电子邮件 ........................................................................................................................ 152
39. 分布式事务用JTA ................................................................................................................. 153
2.1.3.RELEASE
春季启动
vii
春季启动参考指南
39.1. 使用Atomikos公司事务管理器 .................................................................................. 153
39.2. 使用Bitronix事务管理 ................................................................................................ 153
39.3. 使用Java EE管理的事务管理器 ................................................................................ 154
39.4. 混合XA和非XA JMS连接 .......................................................................................... 154
39.5. 支持一个替代的嵌入事务管理器 ............................................................................... 154
40. Hazelcast ............................................................................................................................. 156
41. Quartz调度 ........................................................................................................................... 157
42. 任务执行和调度 .................................................................................................................... 159
43. Spring集成 ............................................................................................................................ 160
44. 春季会议 ............................................................................................................................... 161
45. 监控和管理过JMX ................................................................................................................ 162
46. 测试 ...................................................................................................................................... 163
46.1. 测试范围依赖 ............................................................................................................ 163
46.2. 测试弹簧的应用 ........................................................................................................ 163
46.3. 测试春季启动应用程序 ............................................................................................. 163
检测Web应用程序类型 .............................................................................................. 165
检测测试配置 ............................................................................................................. 165
不包括测试配置 ......................................................................................................... 165
使用模拟环境测试 ..................................................................................................... 166
与正在运行的服务器测试 .......................................................................................... 167
使用JMX .................................................................................................................... 168
嘲笑和豆类间谍活动 .................................................................................................. 168
自动配置测试 ............................................................................................................. 169
自动配置JSON测试 ................................................................................................... 170
自动配置的Spring MVC测试 ..................................................................................... 171
自动配置的Spring WebFlux测试 ............................................................................... 173
自动配置数据JPA测试 ............................................................................................... 174
自动配置的JDBC测试................................................................................................ 176
自动配置数据JDBC测试 ............................................................................................ 176
自动配置jOOQ考试 ................................................................................................... 177
自动配置数据的MongoDB测试 .................................................................................. 177
自动配置数据的Neo4j测试 ........................................................................................ 178
自动配置数据Redis的测试 ........................................................................................ 179
自动配置数据的LDAP测试 ........................................................................................ 179
自动配置REST客户端 ............................................................................................... 180
自动配置的Spring REST文档测试 ............................................................................. 180
自动配置的Spring REST文档测试与模拟MVC ................................................. 181
自动配置的Spring REST文档测试与放心 ......................................................... 182
额外的自动配置和切片 .............................................................................................. 183
用户配置和切片 ......................................................................................................... 183
使用斯波克来测试春季启动应用程序 ........................................................................ 184
46.4. 测试工具 ................................................................................................................... 184
ConfigFileApplicationContextInitializer...................................................................... 184
TestPropertyValues................................................................................................... 184
OutputCapture ........................................................................................................... 184
2.1.3.RELEASE
春季启动
viii