核心功能
本节深入探讨 Spring Boot 的细节。在这里,你可以了解可能需要使用和自定义的关键特性。如果你还没有阅读过 教程 和 使用 Spring Boot 开发 这两部分内容,建议先阅读它们,以扎实掌握基础知识。
章节总结
📄️ SpringApplication
SpringApplication 类提供了一种便捷的方式来引导一个从 main() 方法启动的 Spring 应用。在许多情况下,你可以委托给静态方法 SpringApplication.run(Class, String…),如下例所示:
📄️ 外部化配置
Spring Boot 允许你将配置外部化,以便在不同环境中使用相同的应用程序代码。你可以使用多种外部配置源,包括 Java 属性文件、YAML 文件、环境变量和命令行参数。
📄️ Profiles
Spring Profiles 提供了一种方式,用于将应用程序配置的某些部分隔离,并使其仅在特定环境中可用。任何 @Component、@Configuration 或 @ConfigurationProperties 都可以使用 @Profile 进行标记,以限制其加载时机,如下例所示:
📄️ Logging
Spring Boot 在所有内部日志记录中使用 Commons Logging,但将底层的日志实现保持开放。默认提供了针对 Java Util Logging、Log4j2 和 Logback 的配置。在每种情况下,日志记录器都预先配置为使用控制台输出,同时也可以选择性地启用文件输出。
📄️ 国际化
Spring Boot 支持本地化消息,以便您的应用程序能够满足不同语言偏好用户的需求。默认情况下,Spring Boot 会在 classpath 的根目录下查找是否存在名为 messages 的资源包。
📄️ 面向切面编程
Spring Boot 为面向切面编程(AOP)提供了自动配置。你可以在 Spring Framework 参考文档中了解更多关于 Spring AOP 的内容。
📄️ JSON
Spring Boot 提供了与三个 JSON 映射库的集成:
📄️ 任务执行与调度
在上下文中没有 Executor bean 的情况下,Spring Boot 会自动配置一个 AsyncTaskExecutor。当启用了虚拟线程(使用 Java 21+ 并将 spring.threads.virtual.enabled 设置为 true)时,该执行器将是一个使用虚拟线程的 SimpleAsyncTaskExecutor。否则,它将是一个具有合理默认值的 ThreadPoolTaskExecutor。
📄️ 开发时服务
开发时服务(Development-time services)提供运行应用程序在开发过程中所需的外部依赖。它们仅应在开发期间使用,并在应用程序部署时被禁用。
📄️ 创建你自己的自动配置
如果你在一家开发共享库的公司工作,或者你正在开发一个开源或商业库,你可能希望开发自己的自动配置。自动配置类可以打包到外部 jar 中,并仍然能被 Spring Boot 自动识别。
📄️ Kotlin 支持
Kotlin 是一种静态类型语言,面向 JVM(及其他平台),它允许编写简洁而优雅的代码,同时提供与用 Java 编写的现有库的互操作性。
📄️ SSL
Spring Boot 提供了配置 SSL 信任材料的能力,这些材料可以应用于多种类型的连接,以支持安全通信。可以使用前缀为 spring.ssl.bundle 的配置属性来指定命名的信任材料集及其相关信息。