Spring Boot 文档和手册
  • Introduction
  • 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. 从Spring Boot早期版本升级
    • 11. 开发你的第一个Spring Boot应用
      • 11.1. 创建POM
      • 11.2. 添加classpath依赖
      • 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. 在不使用parent POM的情况下玩转Spring Boot
        • 13.2.3. 改变Java版本
        • 13.2.4. 使用Spring Boot Maven插件
      • 13.3. Gradle
      • 13.4. Ant
      • 13.5. Starters
    • 14. 组织你的代码
      • 14.1. 使用"default"包
      • 14.2. 放置应用的main类
    • 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 自定义restart类加载器
        • 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. Application事件和监听器
      • 23.6. Web环境
      • 23.7 访问应用参数
      • 23.8. 使用ApplicationRunner或CommandLineRunner
      • 23.9 Application退出
    • 24.外化配置
      • 24.1. 配置随机值
      • 24.2. 访问命令行属性
      • 24.3. Application属性文件
      • 24.4. Profile-specific属性
      • 24.5. 属性占位符
      • 24.6. 使用YAML代替Properties
        • 24.6.1. 加载YAML
        • 24.6.2. 在Spring环境中使用YAML暴露属性
        • 24.6.3. Multi-profile YAML文档
        • 24.6.4. YAML缺点
        • 24.6.5 合并YAML列表
      • 24.7. 类型安全的配置属性
        • 24.7.1. 第三方配置
        • 24.7.2. Relaxed绑定
        • 24.7.3 属性转换
        • 24.7.4. @ConfigurationProperties校验
        • 24.7.5 @ConfigurationProperties vs @Value
    • 25. Profiles
      • 25.1. 添加激活的profiles
      • 25.2.以编程方式设置profiles
      • 25.3. Profile-specific配置文件
    • 26. 日志
      • 26.1. 日志格式
      • 26.2. 控制台输出
        • 26.2.1 Color-coded输出
      • 26.3. 文件输出
      • 26.4. 日志级别
      • 26.5. 自定义日志配置
      • 26.6 Logback扩展
        • 26.6.1 Profile-specific配置
        • 26.6.2 Environment属性
    • 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 ConfigurableWebBindingInitializer
        • 27.1.7 模板引擎
        • 27.1.8 错误处理
        • 27.1.9 Spring HATEOAS
        • 27.1.10 CORS支持
      • 27.2 JAX-RS和Jersey
      • 27.3 内嵌servlet容器支持
        • 27.3.1 Servlets, Filters和listeners
        • 27.3.2 Servlet上下文初始化
        • 27.3.3 EmbeddedWebApplicationContext
        • 27.3.4 自定义内嵌servlet容器
        • 27.3.5 JSP的限制
    • 28. 安全
      • 28.1 OAuth2
        • 28.1.1 授权服务器
        • 28.1.2 资源服务器
      • 28.2 User Info中的Token类型
      • 28.3 自定义User Info RestTemplate
        • 28.3.1 客户端
        • 28.3.2 单点登陆
      • 28.4 Actuator安全
    • 29. 使用SQL数据库
      • 29.1. 配置DataSource
        • 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.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. MongoDBTemplate
        • 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 Elasticseach仓库
      • 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仓库
    • 31. 缓存
      • 31.1 支持的缓存提供商
        • 31.1.1 Generic
        • [31.1.2 JCache (JSR-107)](IV. Spring Boot features/31.1.2 JCache (JSR-107).md)
        • 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
        • 31.1.10 Simple
        • 31.1.11 None
    • 32. 消息
      • 32.1. JMS
        • 32.1.1 ActiveQ支持
        • 32.1.2 Artemis支持
        • 32.1.3 HornetQ支持
        • 32.1.4 使用JNDI ConnectionFactory
        • 32.1.5 发送消息
        • 32.1.6 接收消息
      • 32.2 AMQP
        • 32.2.1 RabbitMQ支持
        • 32.2.2 发送消息
        • 32.2.3 接收消息
      • 33. 调用REST服务
        • 33.1 自定义RestTemplate
    • 34. 发送邮件
    • 35. 使用JTA处理分布式事务
      • 35.1 使用Atomikos事务管理器
      • 35.2 使用Bitronix事务管理器
      • 35.3 使用Narayana事务管理器
      • 35.4 使用J2EE管理的事务管理器
      • 35.5 混合XA和non-XA的JMS连接
      • 35.6 支持可替代的内嵌事务管理器
    • 36. Hazelcast
    • 37. Spring集成
    • 38. Spring Session
    • 39. 基于JMX的监控和管理
    • 40. 测试
      • 40.1 测试作用域依赖
      • 40.2 测试Spring应用
      • 40.3 测试Spring Boot应用
        • 40.3.1 发现测试配置
        • 40.3.2 排除测试配置
        • 40.3.3 使用随机端口
        • 40.3.4 模拟和监视beans
        • 40.3.5 自动配置测试
        • 40.3.6 自动配置的JSON测试
        • 40.3.7 自动配置的Spring MVC测试
        • 40.3.8 自动配置的Data JPA测试
        • 40.3.9 自动配置的REST客户端
        • 40.3.10 自动配置的Spring REST Docs测试
        • 40.3.11 使用Spock测试Spring Boot应用
      • 40.4 测试工具类
        • 40.4.1 ConfigFileApplicationContextInitializer
        • 40.4.2 EnvironmentTestUtils
        • 40.4.3 OutputCapture
        • 40.4.4 TestRestTemplate
    • 41. WebSockets
    • 42. Web Services
    • 43. 创建自己的auto-configuration
      • 43.1 理解自动配置的beans
      • 43.2 定位自动配置候选者
      • 43.3 条件注解
        • 43.3.1 Class条件
        • 43.3.2 Bean条件
        • 43.3.3 Property条件
        • 43.3.4 Resource条件
        • 43.3.5 Web Application条件
        • 43.3.6 SpEL表达式条件
      • 43.4 创建自己的starter
        • 43.4.1 命名
        • 43.4.2 自动配置模块
        • 43.4.3 Starter模块
    • 44. 接下来阅读什么
  • V. Spring Boot 执行器
    • 45. 开启production-ready特性
    • 46. 端点
      • 46.1 自定义端点
      • 46.2 执行器MVC端点的超媒体支持
      • 46.3 CORS支持
      • 46.4 添加自定义端点
      • 46.5 健康信息
      • 46.6 安全与HealthIndicators
        • 46.6.1 自动配置的HealthIndicators
        • 46.6.2 编写自定义HealthIndicators
      • 46.7 应用信息
        • 46.7.1 自动配置的InfoContributors
        • 46.7.2 自定义应用info信息
        • 46.7.3 Git提交信息
        • 46.7.4 构建信息
        • 46.7.5 编写自定义的InfoContributors
    • 47. 基于HTTP的监控和管理
      • 47.1 保护敏感端点
      • 47.2 自定义管理端点路径
      • 47.3 自定义管理服务器端口
      • 47.4 配置管理相关的SSL
      • 47.5 自定义管理服务器地址
      • 47.6 禁用HTTP端点
      • 47.7 HTTP health端点访问限制
    • 48. 基于JMX的监控和管理
      • 48.1 自定义MBean名称
      • 48.2 禁用JMX端点
      • 48.3 使用Jolokia通过HTTP实现JMX远程管理
        • 48.3.1 自定义Jolokia
        • 48.3.2 禁用Jolokia
    • 49. 使用远程shell进行监控和管理
      • 49.1 连接远程shell
        • 49.1.1 远程shell证书
      • 49.2 扩展远程shell
        • 49.2.1 远程shell命令
        • 49.2.2 远程shell插件
    • 50. 度量指标
      • 50.1 系统指标
      • 50.2 数据源指标
      • 50.3 缓存指标
      • 50.4 Tomcat session指标
      • 50.5 记录自己的指标
      • 50.6 添加自己的公共指标
      • 50.7 使用Java8的特性
      • 50.8 指标写入,导出和聚合
        • 50.8.1 示例: 导出到Redis
        • 50.8.2 示例: 导出到Open TSDB
        • 50.8.3 示例: 导出到Statsd
        • 50.8.4 示例: 导出到JMX
      • 50.9 聚合多个来源的指标
      • 50.10 Dropwizard指标
      • 50.11 消息渠道集成
    • 51. 审计
    • 52. 追踪
      • 52.1 自定义追踪
    • 53. 进程监控
      • 53.1 扩展配置
      • 53.2 以编程方式
    • 54. 接下来阅读什么
  • VI. 部署到云端
    • 55. 部署到云端
      • 55.1 Cloud Foundry
        • 55.1.1 绑定服务
      • 55.2 Heroku
      • 55.3 Openshift
      • 55.4 Boxfuse和Amazon Web Services
      • 55.5 Google App Engine
    • 56. 安装Spring Boot应用
      • 56.1 Unix/Linux服务
        • 56.1.1 安装为 init.d 服务
        • 56.1.2 安装为Systemd服务
        • 56.1.3 自定义启动脚本
      • 56.2 Microsoft Windows服务
    • 57. 接下来阅读什么
  • VII. Spring Boot CLI
    • 58. 安装CLI
    • 59. 使用CLI
      • 59.1 使用CLI运行应用
        • 59.1.1 推断"grab"依赖
        • 59.1.2 推断"grab"坐标
        • 59.1.3 默认import语句
        • 59.1.4 自动创建main方法
        • 59.1.5 自定义依赖管理
      • 59.2 测试你的代码
      • 59.3 多源文件应用
      • 59.4 应用打包
      • 59.5 初始化新工程
      • 59.6 使用内嵌shell
      • 59.7 为CLI添加扩展
    • 60. 使用Groovy beans DSL开发应用
    • 61. 使用settings.xml配置CLI
    • 62. 接下来阅读什么
  • VIII. 构建工具插件
    • 63. Spring Boot Maven插件
      • 63.1 包含该插件
      • 63.2 打包可执行jar和war文件
    • 64. Spring Boot Gradle插件
      • 64.1 包含该插件
      • 64.2 Gradle依赖管理
      • 64.3 打包可执行jar和war文件
      • 64.4 就地(in-place)运行项目
      • 64.5 Spring Boot插件配置
      • 64.6 Repackage配置
      • 64.7 使用Gradle自定义配置进行Repackage
        • 64.7.1 配置选项
        • 64.7.2 可用的layouts
      • 64.8 理解Gradle插件是如何工作的
      • 64.9 用 Gradle 将包发布到 Maven
        • 64.9.1 自定义 Gradle 用于管理的 pom
      • 65. Spring Boot AntLib模块
        • 65.1. Spring Boot Ant任务
          • 65.1.1. spring-boot:exejar
          • 65.1.2. 示例
        • 65.2. spring-boot:findmainclass
          • 65.2.1. 示例
    • 66. 对其他构建系统的支持
      • 66.1. 重新打包存档
      • 66.2. 内嵌库
      • 66.3. 查找main类
      • 66.4. repackage实现示例
    • 67. 接下来阅读什么
  • IX. How-to指南
    • 68. Spring Boot应用
      • 68.1 创建自己的FailureAnalyzer
      • 68.2 解决自动配置问题
      • 68.3 启动前自定义Environment或ApplicationContext
      • [68.4 构建ApplicationContext层次结构](IX. ‘How-to’ guides/68.4 Build an ApplicationContext hierarchy (addi
      • 68.5 创建no-web应用
        • 69. 属性&配置
      • 69.1. 运行时暴露属性
        • 69.1.1. 使用Maven自动暴露属性
        • 69.1.2. 使用Gradle自动暴露属性
      • 69.2. 外部化SpringApplication配置
      • 69.3 改变应用程序外部配置文件的位置
      • 69.4 使用'short'命令行参数
      • 69.5 使用YAML配置外部属性
      • 69.6 设置生效的Spring profiles
      • 69.7 根据环境改变配置
      • 69.8 发现外部属性的内置选项
    • 70. 内嵌 servlet 容器
      • 70.1 为应用添加Servlet,Filter或Listener
      • 70.2 改变HTTP端口
      • 70.3 使用随机未分配的HTTP端口
      • 70.4 发现运行时的HTTP端口
      • 70.5 配置SSL
      • 70.6 配置访问日志
      • 70.7 在前端代理服务器后使用
        • 70.7.1 自定义Tomcat代理配置
      • 70.8 配置Tomcat
      • 70.9 启用Tomcat的多连接器
      • 70.10 使用Tomcat的LegacyCookieProcessor
      • 70.11 使用Jetty替代Tomcat
      • 70.12 配置Jetty
      • 70.13 使用Undertow替代Tomcat
      • 70.14 配置Undertow
      • 70.15 启用Undertow的多监听器
      • 70.16 使用Tomcat 7.x或8.0
        • 70.16.1 通过Maven使用Tomcat 7.x或8.0
        • 70.16.2 通过Gradle使用Tomcat7.x或8.0
      • 70.17 使用Jetty9.2
        • 70.17.1 通过Maven使用Jetty9.2
        • 70.17.2 通过Gradle使用Jetty 9.2
      • 70.18 使用Jetty 8
        • 70.18.1 通过Maven使用Jetty8
        • 70.18.2 通过Gradle使用Jetty8
      • 70.19 使用@ServerEndpoint创建WebSocket端点
    • 71. Spring MVC
      • 71.1 编写JSON REST服务
      • 71.2 编写XML REST服务
      • 71.3 自定义Jackson ObjectMapper
      • 71.4 自定义@ResponseBody渲染
      • 71.5 处理Multipart文件上传
      • 71.6 关闭Spring MVC DispatcherServlet
      • 71.7 关闭默认的MVC配置
      • 71.8 自定义ViewResolvers
      • 71.9 Velocity
      • 71.10 使用Thymeleaf 3
    • 73. 日志
      • 73.1 配置Logback
        • 73.1.1 配置logback只输出到文件
      • 73.2 配置Log4j
        • 73.2.1 使用YAML或JSON配置Log4j2
    • 74. 数据访问
      • 74.1 配置数据源
      • 74.2 配置两个数据源
      • 74.3 使用Spring Data仓库
      • 74.4 从Spring配置分离@Entity定义
      • 74.5 配置JPA属性
      • 74.6 使用自定义EntityManagerFactory
      • 74.7 使用两个EntityManagers
      • 74.8 使用普通的persistence.xml
      • 74.9 使用Spring Data JPA和Mongo仓库
      • 74.10 将Spring Data仓库暴露为REST端点
      • 74.11 配置JPA使用的组件
    • 75. 数据库初始化
      • 75.1 使用JPA初始化数据库
      • 75.2 使用Hibernate初始化数据库
      • 75.3 使用Spring JDBC初始化数据库
      • 75.4 初始化Spring Batch数据库
      • 75.5 使用高级数据迁移工具
        • 75.5.1 启动时执行Flyway数据库迁移
        • 75.5.2 启动时执行Liquibase数据库迁移
    • 76. 批处理应用
      • 76.1 在启动时执行Spring Batch作业
    • 77. 执行器
      • 77.1 改变HTTP端口或执行器端点的地址
      • 77.2 自定义WhiteLabel错误页面
      • 77.3 Actuator和Jersey
    • 78. 安全
      • 78.1 关闭Spring Boot安全配置
      • 78.2 改变AuthenticationManager并添加用户账号
      • 78.3 当前端使用代理服务器时启用HTTPS
    • 79. 热交换
      • 79.1 重新加载静态内容
      • 79.2. 在不重启容器的情况下重新加载模板
        • 79.2.1 Thymeleaf模板
        • 79.2.2 FreeMarker模板
        • 79.2.3 Groovy模板
        • 79.2.4 Velocity模板
      • 79.3 应用快速重启
      • 79.4 在不重启容器的情况下重新加载Java类
        • 79.4.1 使用Maven配置Spring Loaded
        • 79.4.2 使用Gradle和IntelliJ IDEA配置Spring Loaded
    • 80. 构建
      • 80.1 生成构建信息
      • 80.2 生成Git信息
      • 80.3 自定义依赖版本
      • 80.4 使用Maven创建可执行JAR
      • 80.5 将Spring Boot应用作为依赖
      • 80.6 在可执行jar运行时提取特定的版本
      • 80.7 使用排除创建不可执行的JAR
      • 80.8 远程调试使用Maven启动的Spring Boot项目
      • 80.9 远程调试使用Gradle启动的Spring Boot项目
      • 80.10 使用Ant构建可执行存档
      • 80.11 如何使用Java6
        • 80.11.1 内嵌Servlet容器兼容性
        • 80.11.2 Jackson
        • 80.11.3 JTA API兼容性
    • 81. 传统部署
      • 81.1 创建可部署的war文件
      • 81.2 为老的servlet容器创建可部署的war文件
      • 81.3 将现有的应用转换为Spring Boot
      • 81.4 部署WAR到Weblogic
      • [81.5 部署WAR到老的(Servlet2.5)容器](IX. ‘How-to’ guides/81.5 Deploying a WAR in an Old (Servlet 2.5) Conta
  • X.附录
    • 附录A. 常见应用属性
    • 附录B. 配置元数据
      • 附录B.1. 元数据格式
        • 附录B.1.1. Group属性
        • 附录B.1.2. Property属性
        • 附录B.1.3. 可重复的元数据节点
      • 附录B.2. 使用注解处理器产生自己的元数据
        • 附录 B.2.1. 内嵌属性
        • 附录 B.2.2. 添加其他的元数据
    • 附录C. 自动配置类
      • 附录 C.1. 来自spring-boot-autoconfigure模块
      • 附录C.2. 来自spring-boot-actuator模块
    • 附录D. 可执行jar格式
      • 附录D.1. 内嵌JARs
        • 附录D.1.1. 可执行jar文件结构
        • 附录D.1.2. 可执行war文件结构
      • 附录D.2. Spring Boot的"JarFile"类
        • 附录D.2.1. 对标准Java "JarFile"的兼容性
      • 附录D.3. 启动可执行jars
        • 附录D.3.1 Launcher manifest
        • 附录D.3.2. 暴露的存档
      • 附录D.4. PropertiesLauncher特性
      • 附录D.5. 可执行jar的限制
        • 附录D.5.1. Zip实体压缩
        • 附录D.5.2. 系统ClassLoader
      • 附录D.6. 可替代的单一jar解决方案
    • 附录E. 依赖版本
Powered by GitBook
On this page

Was this helpful?

  1. IV. Spring Boot特性
  2. 40. 测试
  3. 40.4 测试工具类

40.4.1 ConfigFileApplicationContextInitializer

ConfigFileApplicationContextInitializer是一个ApplicationContextInitializer,可在测试类中用于加载Spring Boot的application.properties文件。当不需要使用@SpringBootTest提供的全部特性时,你可以使用它。

@ContextConfiguration(classes = Config.class,initializers = ConfigFileApplicationContextInitializer.class)

注 单独使用ConfigFileApplicationContextInitializer不会提供@Value("${…}")注入支持,它只负责确保application.properties文件加载进Spring的Environment。为了@Value支持,你需要额外配置一个PropertySourcesPlaceholderConfigurer或使用@SpringBootTest为你自动配置一个。

Previous40.4 测试工具类Next40.4.2 EnvironmentTestUtils

Last updated 6 years ago

Was this helpful?