- Spring Boot 教程
- Spring Boot - 首页
- Spring Boot - 简介
- Spring Boot - 快速入门
- Spring Boot - 引导
- Spring Tool Suite
- Spring Boot - Tomcat 部署
- Spring Boot - 构建系统
- Spring Boot - 代码结构
- Spring Bean & 依赖注入
- Spring Boot - 运行器
- Spring Boot - 启动器
- Spring Boot - 应用属性
- Spring Boot - 配置
- Spring Boot - 注解
- Spring Boot - 日志记录
- 构建 RESTful Web 服务
- Spring Boot - 异常处理
- Spring Boot - 拦截器
- Spring Boot - Servlet 过滤器
- Spring Boot - Tomcat 端口号
- Spring Boot - Rest 模板
- Spring Boot - 文件处理
- Spring Boot - 服务组件
- Spring Boot - Thymeleaf
- 使用 RESTful Web 服务
- Spring Boot - CORS 支持
- Spring Boot - 国际化
- Spring Boot - 调度
- Spring Boot - 启用 HTTPS
- Spring Boot - Eureka 服务端
- 使用 Eureka 进行服务注册
- 网关代理服务器和路由
- Spring Cloud 配置服务器
- Spring Cloud 配置客户端
- Spring Boot - Actuator
- Spring Boot - Admin 服务器
- Spring Boot - Admin 客户端
- Spring Boot - 启用 Swagger2
- Spring Boot - 使用 SpringDoc OpenAPI
- Spring Boot - 创建 Docker 镜像
- 追踪微服务日志
- Spring Boot - Flyway 数据库
- Spring Boot - 发送邮件
- Spring Boot - Hystrix
- Spring Boot - Web Socket
- Spring Boot - 批处理服务
- Spring Boot - Apache Kafka
- Spring Boot - Twilio
- Spring Boot - 单元测试用例
- Rest Controller 单元测试
- Spring Boot - 数据库处理
- 保护 Web 应用
- Spring Boot - 使用 JWT 的 OAuth2
- Spring Boot - Google Cloud Platform
- Spring Boot - Google OAuth2 登录
- Spring Boot 资源
- Spring Boot - 快速指南
- Spring Boot - 有用资源
- Spring Boot - 讨论
Spring Boot – 配置/自动配置
本章将详细讨论 Spring Boot 配置和自动配置。
Spring Boot 配置
尽管 Spring/Spring Boot 应用可以使用 XML 文档进行配置,但通常建议使用带有 @Configuration 注解的单个文件来配置 Spring Boot 应用。
不同类型的注解
@Component 注解
在 Spring Boot 中,@Component 注解声明一个类为 Spring 组件。这向 Spring 信号表明该类应由 Spring 容器管理,这意味着它将被自动创建、初始化,并可能被注入到其他组件中。
示例
import org.springframework.stereotype.Component; @Component public class Utility { ... }
@Configuration 注解
在 Spring Boot 中,@Configuration 注解用于指示一个类是 Bean 定义的来源。它是 Spring 框架中的核心注解,并非 Spring Boot 特有的。标有 @Configuration 的类可以使用类中方法上的 @Bean 注解来定义 Bean。然后,这些 Bean 由 Spring 容器管理。@Configuration 推广基于 Java 的配置方法,而不是仅仅依赖 XML 配置文件。
示例
@Configuration public class AppConfig { @Bean public MyService myService() { return new MyServiceImpl(); } }
@SpringBootApplication 注解
这是一个元注解,它组合了 @EnableAutoConfiguration、@ComponentScan 和 @Configuration。它通常是引导 Spring Boot 应用所需的唯一注解。
示例
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.ComponentScan; @SpringBootApplication public class MyApplication { public static void main(String[] args) { SpringApplication.run(MyApplication.class, args); } }
@ComponentScan 注解
在 Spring Boot 中,@ComponentScan 注解用于指示 Spring 扫描指定的包及其子包中的组件(用 @Component、@Service、@Repository、@Controller 等注解的类)并将它们注册为 Spring 应用上下文中的 Bean。默认情况下,如果您没有显式使用 @ComponentScan,Spring Boot 会自动扫描您的主应用程序类所在的包及其子包。如果您的组件位于不同的包结构中,您可以使用 @ComponentScan 的 basePackages 属性来指定要扫描的包。您可以使用 basePackages 中的数组指定多个包,例如:
basePackages = {"com.example.package1", "com.example.package2"}
示例
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.ComponentScan; @SpringBootApplication @ComponentScan(basePackages = {"com.example.mypackage"}) public class MyApplication { public static void main(String[] args) { SpringApplication.run(MyApplication.class, args); } }
什么是 Spring Boot 自动配置?
Spring Boot 自动配置是一项功能,它可以根据类路径上存在的依赖项和各种属性设置来自动配置您的 Spring 应用程序。这消除了许多手动配置的需要,使 Spring Boot 应用程序更容易设置和维护。
@SpringBootApplication 或 @EnableAutoConfiguration 注解
这些注解触发自动配置过程。通常,您使用 @SpringBootApplication 注解您的主应用程序类,其中包含 @EnableAutoConfiguration。可以使用 @AutoConfigurationPackage 注解配置其他包。
扫描类路径 - Spring Boot 扫描类路径以查找库和框架。
条件配置 - 基于检测到的依赖项,Spring Boot 应用相关的配置。这是使用 @Conditional 注解完成的,例如:
@ConditionalOnClass - 如果类路径上存在特定类,则应用配置。
@ConditionalOnMissingBean - 如果尚未定义特定 Bean,则应用配置。
@ConditionalOnProperty - 基于属性值应用配置。
Bean 创建和配置 - Spring Boot 基于应用的自动配置创建和配置 Bean。
示例
如果您将 spring-boot-starter-web 依赖项添加到您的项目中,Spring Boot 会自动配置 Tomcat web 服务器以及 web 应用程序所需的其它组件。
如果您添加了 spring-boot-starter-data-jpa 依赖项,Spring Boot 会自动配置数据源、实体管理器以及基于 JPA 的数据访问所需的其它组件。
Spring Boot 自动配置的优势
以下是使用 Spring Boot 自动配置的一些主要优势。
减少样板代码 - 自动配置消除了手动配置常用 Spring 组件的需要。
加快开发速度 - 您可以快速创建 Spring Boot 应用程序,而无需编写大量的配置代码。
提高生产力 - 自动配置允许您专注于应用程序的核心业务逻辑。
自定义 - 您可以通过以下方式自定义自动配置行为
使用 @EnableAutoConfiguration 的 exclude 属性排除特定的自动配置类。
定义您自己的 Bean 来覆盖自动配置的 Bean。
使用属性文件或环境变量来修改默认配置。