文章目录
- 常见扩展接口
- 1. CommandLineRunner 和 ApplicationRunner
- 2. EnvironmentPostProcessor
- 3. BeanFactoryPostProcessor
- 4. BeanPostProcessor
- 5. WebMvcConfigurer 和 WebFluxConfigurer
- 6. ServletWebServerFactoryCustomizer 和 ReactiveWebServerFactoryCustomizer
- 7. SpringApplicationRunListener
- 8. ServletContainerCustomizer
- 9. ErrorAttributes 和 ErrorWebExceptionHandler
- 10. ConversionService
- 11. MessageSource
- 12. Condition (通过 @Conditional 注解)
- 13. HealthIndicator
- 14. Endpoint
- 15. MultipartConfigFactory
- 16. SpringApplicationCustomizer
- 17. AsyncConfigurer
- 18.FactoryBean
- 19. InitializingBean
- 20. DisposableBean
- 21.BeanFactoryAware
- 22. 继续补充
常见扩展接口
Spring Boot 提供了一系列的接口,允许开发者扩展其功能,从而更好地适应不同的应用场景。以下是一些常用的扩展接口及其用途:
1. CommandLineRunner 和 ApplicationRunner
- 用途:这两个接口允许你在 Spring Boot 应用启动完成后执行一些初始化任务。
- 区别:
CommandLineRunner
接受命令行参数数组作为输入,而ApplicationRunner
接受ApplicationContext
作为输入,可以访问应用上下文中的 Bean。
2. EnvironmentPostProcessor
- 用途:允许你在 Spring 应用上下文初始化之前对
Environment
进行自定义修改,比如添加或覆盖属性值。
3. BeanFactoryPostProcessor
- 用途:允许你在所有 Bean 定义加载到容器后,但在任何 Bean 创建之前修改 Bean 定义。
4. BeanPostProcessor
- 用途:允许你在 Bean 实例化后立即对其进行修改或包装,常用于 AOP 切面的实现。
5. WebMvcConfigurer 和 WebFluxConfigurer
- 用途:用于自定义 Spring MVC 或 WebFlux 配置,如添加控制器、拦截器、视图解析器等。
6. ServletWebServerFactoryCustomizer 和 ReactiveWebServerFactoryCustomizer
- 用途:允许你自定义嵌入式 Servlet 容器或响应式 Web 服务器的配置。
7. SpringApplicationRunListener
- 用途:允许你监听
SpringApplication
的运行状态,如启动前后的事件。
8. ServletContainerCustomizer
- 用途:用于自定义嵌入式 Servlet 容器的配置。
9. ErrorAttributes 和 ErrorWebExceptionHandler
- 用途:允许你自定义错误处理逻辑,如错误页面显示、HTTP 错误码返回等。
10. ConversionService
- 用途:允许你扩展 Spring MVC 的类型转换服务,增加新的类型转换器。
11. MessageSource
- 用途:用于国际化消息资源的定制。
12. Condition (通过 @Conditional 注解)
- 用途:允许你根据特定条件决定某个
@Bean
方法是否会被调用,从而动态地控制 Bean 的注册。
13. HealthIndicator
- 用途:用于扩展 Spring Boot Actuator 的健康检查功能。
14. Endpoint
- 用途:用于扩展 Spring Boot Actuator 的端点功能。
15. MultipartConfigFactory
- 用途:用于自定义文件上传的相关配置。
16. SpringApplicationCustomizer
- 用途:允许你在
SpringApplication
启动之前对其进行自定义。
17. AsyncConfigurer
- 用途:用于配置异步执行策略,如线程池大小、拒绝策略等。
18.FactoryBean
- 用途:用于提供更为复杂的对象扩展
19. InitializingBean
- 用途:接口是一个用于执行初始化逻辑的回调接口
20. DisposableBean
- 用途:接口用于执行 Bean 的销毁操作
21.BeanFactoryAware
- 用途:接口是 Spring 框架中的一个回调接口,它允许 Bean 获得对底层 BeanFactory 的引用
22. 继续补充
要使用这些接口,通常需要将实现类标记为 @Component
,这样它们就会被 Spring 容器自动检测并注入。此外,还可以通过 XML 配置或其他方式显式地注册这些实现类。这些扩展点为开发者提供了高度的灵活性,可以根据具体的业务需求来定制 Spring Boot 应用的行为。