Spring Boot参考指南
作者
菲利普· 韦伯,戴夫 Syer,约什 长,斯特凡 尼科尔,罗布 绞车,安迪· 威尔金森,马塞尔 Overdijk,基督教 杜普伊斯,塞巴斯蒂安· 德勒兹,迈克尔· 西蒙斯,韦德兰 Pavić,周杰伦 科比, Madhura 巴维 2.0.3.RELEASE版权所有©2012-2018
本文件副本可供您自行使用并分发给其他人,前提是您不收取任何此类副本的费用,并进一步规定每份副本均包含此版权声明,无论是以印刷版还是电子版分发.
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.Windows Scoop安装 10.2.7.快速启动Spring CLI示例 10.3.从较早版本的Spring Boot升级 11.开发你的第一个Spring Boot应用程序 11.1.创建POM 11.2.添加类路径依赖关系 11.3.编写代码 11.3.1.@RestController和@RequestMapping注解 11.3.2.@EnableAutoConfiguration注释 11.3.3.“主要”方法 11.4.运行示例 11.5.创建一个可执行的Jar 12.下一步阅读什么 III.使用Spring Boot 13.建立系统 13.1. Dependency Management 13.2.Maven的 13.2.1.继承初始父项 13.2.2.使用没有父POM的Spring Boot 13.2.3.使用Spring Boot Maven插件 13.3.摇篮 13.4.蚂蚁 13.5.首发 14.构建你的代码 14.1.使用“默认”包 14.2.查找主要应用程序类 15.配置类 15.1.导入其他配置类 15.2.导入XML配置 16. Auto-configuration 16.1.逐渐替换自动配置 16.2.禁用特定的自动配置类 17.春豆和依赖注入 18.使用@SpringBootApplication注释 19.运行你的应用程序 19.1.从IDE运行 19.2.作为打包应用程序运行 19.3.使用Maven插件 19.4.使用Gradle插件 19.5.热交换 20.开发人员工具 20.1. Property Defaults 20.2.自动重启 20.2.1.记录条件评估中的更改 20.2.2.排除资源 20.2.3.看额外的路径 20.2.4.禁用重新启动 20.2.5.使用触发文件 20.2.6.自定义重启类加载器 20.2.7. Known Limitations 20.3.LiveReload 20.4.全局设置 20.5.远程应用 20.5.1. Running the Remote Client Application 20.5.2.远程更新 21.包装您的生产申请 22.下一步阅读什么 IV.Spring Boot功能 23. SpringApplication 23.1.启动失败 23.2.自定义横幅 23.3.自定义SpringApplication 23.4.Fluent Builder API 23.5.应用程序事件和监听器 23.6.Web环境 23.7.访问应用程序参数 23.8.使用ApplicationRunner或CommandLineRunner 23.9.申请退出 23.10.管理功能 24.外部化配置 24.1.配置随机值 24.2.访问命令行属性 24.3.应用程序属性文件 24.4.配置文件特定的属性 24.5.属性中的占位符 24.6.使用YAML而不是属性 24.6.1.正在加载YAML 24.6.2.在Spring环境中将YAML作为属性公开 24.6.3.多配置文件YAML文件 24.6.4.YAML的缺点 24.7.类型安全的配置属性 24.7.1.第三方配置 24.7.2.轻松的绑定 24.7.3.合并复杂类型 24.7.4.属性转换 转换持续时间 24.7.5.@ConfigurationProperties验证 24.7.6.@ConfigurationProperties与@Value 25.简介 25.1.添加活动配置文件 25.2.编程设置配置文件 25.3.配置文件特定的配置文件 26. Logging 26.1.日志格式 26.2.控制台输出 26.2.1.彩色编码输出 26.3.文件输出 26.4.日志级别 26.5. Custom Log Configuration 26.6.Logback扩展 26.6.1.配置文件特定的配置 26.6.2.环境属性 27.开发Web应用程序 27.1.“Spring Web MVC框架” 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.自定义Favicon 27.1.8.路径匹配和内容协商 27.1.9.ConfigurableWebBindingInitializer 10年1月27日.模板引擎 11年1月27日.错误处理 自定义错误页面 Mapping Error Pages outside of Spring MVC 12年1月27日.春天的HATEOAS 13年1月27日.CORS支持 27.2.“Spring WebFlux框架” 27.2.1.Spring WebFlux自动配置 27.2.2.使用HttpMessageReaders和HttpMessageWriters的HTTP编解码器 27.2.3.静态内容 27.2.4.模板引擎 27.2.5.错误处理 自定义错误页面 27.2.6.网页过滤器 27.3.JAX-RS和泽西岛 27.4.嵌入式Servlet容器支持 27.4.1.Servlet,过滤器和监听器 将Spring Servlet,过滤器和监听器注册为Spring Bean 27.4.2.Servlet上下文初始化 扫描Servlet,筛选器和侦听器 27.4.3.ServletWebServerApplicationContext 27.4.4.定制嵌入式Servlet容器 程序化定制 直接自定义ConfigurableServletWebServerFactory 27.4.5.JSP限制 28.安全 28.1.MVC安全 28.2.WebFlux安全 28.3.的OAuth2 28.3.1.客户 28.3.2.服务器 28.4.执行器安全 28.4.1.跨站请求伪造保护 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存储库 29.3.3.创建和删除JPA数据库 29.3.4.在View中打开EntityManager 29.4. Using H2’s Web Console 29.4.1.更改H2 Console的路径 29.5.使用jOOQ 29.5.1.代码生成 29.5.2.使用DSLContext 29.5.3.jOOQ SQL方言 29.5.4.定制jOOQ 30.与NoSQL Technologies合作 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数据连接到Elasticsearch 30.6.3.Spring Data Elasticsearch存储库 30.7.卡桑德拉 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数据LDAP存储库 30.9.3.嵌入式内存LDAP服务器 30.10.InfluxDB 30.10.1.连接到InfluxDB 31.缓存 31.1.支持的缓存提供程序 31.1.1.通用 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.咖啡因 31.1.9.简单 10年1月31日.没有 32. Messaging 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. Sending a Message 32.2.3.接收消息 32.3.Apache Kafka支持 32.3.1.发送消息 32.3.2.接收消息 32.3.3.额外的卡夫卡属性 33.用REST调用REST服务 RestTemplate 33.1.RestTemplate自定义 34.用REST调用REST服务 WebClient 34.1.WebClient自定义 35.验证 36.发送电子邮件 37.与JTA的分布式事务 37.1.使用Atomikos事务管理器 37.2.使用Bitronix事务管理器 37.3.使用Narayana事务管理器 37.4.使用Java EE托管事务管理器 37.5.混合XA和非XA JMS连接 37.6.支持替代嵌入式事务管理器 38. Hazelcast 39.石英调度器 40.春季融合 41. Spring Session 42.通过JMX进行监视和管理 43.测试 43.1.测试范围依赖关系 43.2.测试Spring应用程序 43.3.测试Spring Boot应用程序 43.3.1. Detecting Web Application Type 43.3.2.检测测试配置 43.3.3.不包括测试配置 43.3.4.使用运行的服务器进行测试 43.3.5.使用JMX 43.3.6.嘲笑和侦察豆 43.3.7. Auto-configured Tests 43.3.8.自动配置的JSON测试 43.3.9.自动配置的Spring MVC测试 43.3.10.自动配置的Spring WebFlux测试 43.3.11.自动配置的数据JPA测试 43.3.12.自动配置的JDBC测试 43.3.13.自动配置的jOOQ测试 43.3.14.自动配置的数据MongoDB测试 43.3.15.自动配置的数据Neo4j测试 43.3.16.自动配置的数据Redis测试 43.3.17.自动配置的数据LDAP测试 43.3.18.自动配置的REST客户端 43.3.19.自动配置的Spring REST Docs测试 自动配置的Spring REST Docs使用Mock MVC进行测试 自动配置的Spring REST Docs使用REST Assured进行测试 43.3.20.用户配置和切片 43.3.21.使用Spock测试Spring Boot应用程序 43.4.测试实用程序 43.4.1.ConfigFileApplicationContextInitializer 43.4.2.TestPropertyValues 43.4.3.OutputCapture 43.4.4.TestRestTemplate 44. WebSockets 45.网络服务 46.创建您自己的自动配置 46.1.了解自动配置的Bean 46.2.查找自动配置候选人 46.3.条件注释 46.3.1.班级条件 46.3.2.豆条件 46.3.3.财产状况 46.3.4.资源条件 46.3.5.Web应用程序条件 46.3.6.SpEL表达条件 46.4.测试你的自动配置 46.4.1.模拟Web上下文 46.4.2.覆盖类路径 46.5.创建你自己的启动器 46.5.1.命名 46.5.2.autoconfigure模 46.5.3.入门模块 47. Kotlin的支持 47.1.要求 47.2.空安全 47.3.Kotlin API 47.3.1.runApplication 47.3.2.扩展 47.4.依赖管理 47.5. @ConfigurationProperties 47.6.测试 47.7.资源 47.7.1.进一步阅读 47.7.2.例子 48.下一步阅读什么 V. Spring Boot执行器:生产就绪功能 49.启用生产就绪功能 50.终点 50.1.启用端点 50.2. Exposing Endpoints 50.3.保护HTTP端点 50.4.配置端点 50.5.执行器Web终端的超媒体 50.6.执行器Web端点路径 50.7.CORS支持 50.8.实现自定义端点 50.8.1.接收输入 输入类型转换 50.8.2.自定义Web端点 Web端点请求谓词 路径 HTTP方法 消费 产生 Web端点响应状态 Web端点范围请求 Web端点安全 50.8.3.Servlet端点 50.8.4.控制器端点 50.9.健康信息 50.9.1.自动配置的HealthIndicators 50.9.2.编写自定义HealthIndicators 50.9.3.反应性健康指标 50.9.4.自动配置的ReactiveHealthIndicators 50.10.应用信息 50.10.1.自动配置InfoContributors 50.10.2.自定义应用信息 50.10.3.Git提交信息 50.10.4.构建信息 50.10.5.编写自定义InfoContributors 51.通过HTTP进行监控和管理 51.1.自定义管理端点路径 51.2.自定义管理服务器端口 51.3.配置管理特定的SSL 51.4.自定义管理服务器地址 51.5.禁用HTTP端点 52.通过JMX进行监控和管理 52.1.定制MBean名称 52.2.禁用JMX终结点 52.3.通过HTTP使用Jolokia进行JMX 52.3.1.定制Jolokia 52.3.2.禁用Jolokia 伐木者 53.1.配置记录器 54.度量 54.1.入门 54.2.支持的监测系统 54.2.1.舆图 54.2.2.Datadog 54.2.3.神经节 54.2.4.石墨 54.2.5.辐辏 54.2.6.JMX 54.2.7.新的遗物 54.2.8.普罗米修斯 54.2.9.SignalFx 54.2.10.简单 54.2.11.StatsD 54.2.12.波前 54.3.支持的度量标准 54.3.1.Spring MVC度量标准 54.3.2.Spring WebFlux指标 54.3.3.RestTemplate指标 54.3.4.高速缓存指标 54.3.5.数据源指标 54.3.6.RabbitMQ指标 54.4.注册自定义指标 54.5.自定义各个指标 54.5.1.每米性能 54.6.指标终点 55.审计 56. HTTP跟踪 56.1.自定义HTTP跟踪 57.过程监测 57.1.扩展配置 57.2.编程 58. Cloud Foundry支持 58.1. Disabling Extended Cloud Foundry Actuator Support 58.2.Cloud Foundry自签名证书 58.3.自定义上下文路径 59.接下来要读什么 VI.部署Spring Boot应用程序 60.部署到云 60.1.Cloud Foundry 60.1.1.绑定到服务 60.2.Heroku的 60.3.OpenShift 60.4.亚马逊网络服务(AWS) 60.4.1.AWS Elastic Beanstalk 使用Tomcat平台 使用Java SE平台 60.4.2.概要 60.5.Boxfuse和亚马逊网络服务 60.6.Google Cloud 61.安装Spring Boot应用程序 61.1.支持的操作系统 61.2.Unix / Linux服务 61.2.1.安装即init.d服务(System V) 确保init.d服务 61.2.2.安装即systemd服务 61.2.3.自定义启动脚本 在写入时自定义启动脚本 在运行时自定义脚本 61.3.Microsoft Windows服务 62.接下来要读什么 七.Spring Boot CLI 63.安装CLI 64.使用CLI 64.1.使用CLI运行应用程序 64.1.1.推导出“抢”依赖 64.1.2.推导出“抢”坐标 64.1.3.默认导入语句 64.1.4.自动主要方法 64.1.5.定制依赖管理 64.2.有多个源文件的应用程序 64.3.打包你的应用程序 64.4.初始化新项目 64.5.使用嵌入式外壳 64.6.向CLI添加扩展 65.使用Groovy Beans DSL开发应用程序 66.使用CLI配置CLI settings.xml 67.接下来要读什么 八.构建工具插件 68. Spring Boot Maven插件 68.1.包括插件 68.2.打包可执行的jar和war文件 69. Spring Boot Gradle插件 70. Spring Boot AntLib模块 70.1.Spring Boot Ant任务 70.1.1. spring-boot:exejar 70.1.2.例子 70.2. spring-boot:findmainclass 70.2.1.例子 71.支持其他构建系统 71.1.重新包装档案 71.2.嵌套库 71.3.找到一个主要类 71.4.示例重新打包实施 72.接下来要读什么 IX.'指导'指南 73. Spring Boot Application 73.1.创建你自己的FailureAnalyzer 73.2.解决自动配置问题 73.3.在开始之前自定义环境或ApplicationContext 73.4.构建ApplicationContext层次结构(添加父级或根级上下文) 73.5.创建一个非Web应用程序 74.属性和配置 74.1.在构建时自动扩展属性 74.1.1.使用Maven自动扩展属性 74.1.2.使用Gradle的自动属性扩展 74.2.外部化配置SpringApplication 74.3.更改应用程序的外部属性的位置 74.4.使用'短'命令行参数 74.5.使用YAML作为外部属性 74.6.设置活动的弹簧配置文件 74.7.根据环境更改配置 74.8.发现外部属性的内置选项 75.嵌入式Web服务器 75.1.使用另一个Web服务器 75.2.禁用Web服务器 75.3.更改HTTP端口 75.4.使用随机未分配的HTTP端口 75.5.在运行时发现HTTP端口 75.6.启用HTTP响应压缩 75.7.配置SSL 75.8.配置HTTP / 2 75.8.1.HTTP / 2与Undertow 75.8.2.HTTP / 2与Jetty 75.8.3.HTTP / 2与Tomcat 75.9.配置Web服务器 75.10.将Servlet,Filter或Listener添加到应用程序中 75.10.1.使用Spring Bean添加Servlet,Filter或Listener 禁用Servlet或Filter的注册 75.10.2.通过使用类路径扫描添加Servlet,筛选器和监听器 75.11.配置访问日志记录 75.12.运行在前端代理服务器后面 75.12.1.自定义Tomcat的代理配置 75.13.使用Tomcat启用多个连接器 75.14.使用Tomcat的LegacyCookieProcessor 75.15.使用Undertow启用多个监听器 75.16.使用@ServerEndpoint创建WebSocket端点 76. Spring MVC 76.1.编写一个JSON REST服务 76.2.编写一个XML REST服务 76.3.自定义Jackson ObjectMapper 76.4.自定义@ResponseBody呈现 76.5.处理多部分文件上传 76.6.关闭Spring MVC DispatcherServlet 76.7.关闭默认的MVC配置 76.8.自定义ViewResolvers 77.泽西岛 77.1.使用Spring Security来保护Jersey端点 HTTP客户端 78.1.配置RestTemplate以使用代理 记录 79.1.配置Logback进行日志记录 79.1.1.为纯文件输出配置Logback 79.2.配置Log4j进行日志记录 79.2.1.使用YAML或JSON配置Log4j 2 80.数据访问 80.1.配置一个自定义数据源 80.2.配置两个数据源 80.3.使用Spring数据存储库 80.4.Spring配置分离@实体定义 80.5.配置JPA属性 80.6.配置Hibernate命名策略 80.7.使用自定义EntityManagerFactory 80.8.使用两个EntityManagers 80.9.使用传统persistence.xml文件 80.10.使用Spring Data JPA和Mongo仓库 80.11.将Spring数据存储库公开为REST端点 80.12.配置由JPA使用的组件 80.13.用两个数据源配置jOOQ 81.数据库初始化 81.1.使用JPA初始化数据库 81.2.使用Hibernate初始化数据库 81.3.初始化数据库 81.4.初始化一个Spring批处理数据库 81.5.使用更高级别的数据库迁移工具 81.5.1.启动时执行Flyway数据库迁移 81.5.2.在启动时执行Liquibase数据库迁移 82.消息 82.1.禁用事务处理JMS会话 83.批量应用程序 83.1.在启动时执行Spring批处理作业 84.执行器 84.1.更改执行器端点的HTTP端口或地址 84.2.自定义'whitelabel'错误页面 84.3. Sanitize sensible values 85.安全 85.1.关闭Spring Boot安全配置 85.2.更改UserDetailsService和添加用户帐户 85.3.在代理服务器后运行时启用HTTPS 86.热插拔 86.1.重新加载静态内容 86.2.重新加载模板而不重新启动容器 86.2.1.Thymeleaf模板 86.2.2.FreeMarker模板 86.2.3.Groovy模板 86.3.快速应用程序重启 86.4.重新加载Java类而不重新启动容器 87.建设 87.1.生成构建信息 87.2.生成Git信息 87.3.自定义依赖版本 87.4.用Maven创建一个可执行的JAR 87.5.使用Spring Boot应用程序作为依赖项 87.6.当可执行jar运行时提取特定的库 87.7.用排除项创建一个不可执行的JAR 87.8.远程调试Maven启动的Spring Boot应用程序 87.9.在不使用的情况下从Ant构建可执行文件spring-boot-antlib 88.传统部署 88.1.创建一个可部署的战争文件 88.2.将现有的应用程序转换为Spring Boot 88.3.将WAR部署到WebLogic 88.4.使用Jedis代替生菜 十,附录 A.通用应用程序属性 B. Configuration Metadata B.1.元数据格式 B.1.1.组属性 B.1.2.属性属性 B.1.3.提示属性 B.1.4.重复的元数据项目 B.2. Providing Manual Hints B.2.1.价值提示 B.2.2.价值提供者 任何 类参考 处理为 记录器名称 Spring Bean参考 Spring配置文件名称 B.3.使用注释处理器生成您自己的元数据 B.3.1.嵌套属性 B.3.2.添加额外的元数据 C.自动配置类 C.1.从“spring-boot-autoconfigure”模块 C.2.从“spring-boot-actuator-autoconfigure”模块 D.测试自动配置注释 E.可执行的Jar格式 E.1.嵌套JAR E.1.1. The Executable Jar File Structure E.1.2.可执行的战争文件结构 E.2.Spring Boot的“JarFile”类 E.2.1.与标准Java“JarFile”兼容 E.3.启动可执行的罐子 E.3.1.启动器清单 E.3.2.爆炸档案 E.4. PropertiesLauncher Features E.5.可执行的瓶子限制 E.6.替代性单罐解决方案 F.依赖版本