Spring Boot扩展机制 - Spring Factories
时间:2022-07-25
本文章向大家介绍Spring Boot扩展机制 - Spring Factories,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
Spring Boot使用的时候,有时候为业务方提供一些基础服务,比如监控,告警等,为了降低业务接入难度,就需要使用Spring Factories扩展机制
使用方式
- 启动类:
com.tenmao.FactoriesApplication
@SpringBootApplication
public class FactoriesApplication implements ApplicationRunner {
@Resource
private UserManager userManager;
public static void main(String[] args) {
SpringApplication.run(FactoriesApplication.class, args);
}
@Override
public void run(ApplicationArguments args) throws Exception {
System.out.println(userManager.getName());
}
}
- 配置类:
com.shimao.ShimaoAuthConfiguration
@Configuration
public class ShimaoAuthConfiguration {
@Bean
public UserManager userManager() {
return new UserManager();
}
}
- 扩展配置:
META-INF/spring.factories
org.springframework.boot.autoconfigure.EnableAutoConfiguration=
com.shimao.ShimaoAuthConfiguration
shardingsphere扩展
org.apache.shardingsphere.shardingjdbc.spring.boot.SpringBootConfiguration
@Configuration
@EnableConfigurationProperties({
SpringBootShardingRuleConfigurationProperties.class,
SpringBootMasterSlaveRuleConfigurationProperties.class, SpringBootEncryptRuleConfigurationProperties.class, SpringBootPropertiesConfigurationProperties.class})
@ConditionalOnProperty(prefix = "spring.shardingsphere", name = "enabled", havingValue = "true", matchIfMissing = true)
@AutoConfigureBefore(DataSourceAutoConfiguration.class)
@RequiredArgsConstructor
public class SpringBootConfiguration implements EnvironmentAware {
//忽略了其他
}
spring.factories
org.springframework.boot.autoconfigure.EnableAutoConfiguration=
org.apache.shardingsphere.shardingjdbc.spring.boot.SpringBootConfiguration
其他常见第三方库
这些库都用到Spring Factories扩展机制
- sharding-jdbc-spring-boot-starte
- mybatis-plus-boot-starter
- redisson
其他扩展点
- Sprig Boot扩展
# Auto Configure(这个扩展是使用的最多的,特别是是一些公共SDK,会这借助这扩展实现Bean的自动注入)
org.springframework.boot.autoconfigure.EnableAutoConfiguration
# PropertySource Loaders
org.springframework.boot.env.PropertySourceLoader
# Run Listeners
org.springframework.boot.SpringApplicationRunListener
# Error Reporters
org.springframework.boot.SpringBootExceptionReporter
# Application Context Initializers
org.springframework.context.ApplicationContextInitializer
# Application Listeners
org.springframework.context.ApplicationListener
# Environment Post Processors
org.springframework.boot.env.EnvironmentPostProcessor
# Failure Analyzers
org.springframework.boot.diagnostics.FailureAnalyzer
# FailureAnalysisReporters
org.springframework.boot.diagnostics.FailureAnalysisReporter
参考
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- 虚拟机字节码执行引擎,JVM的马达图,是爱情呀
- 微信小程序【浅提WXSS样式】
- Kubernetes Liveness and Readiness Probes
- Magicodes.IE 2.3重磅发布——.NET Core开源导入导出库
- pytest文档59-运行未提交git的用例(pytest-picked)
- pytest文档57-单元测试代码覆盖率(pytest-cov)
- pytest文档58-随机执行测试用例(pytest-random-order)
- Kubernetes探针踩坑记
- 大揭秘| 我司项目组Gitlab Flow && DevOps流程
- 离线安装Superset 0.37(截图详细版)
- 如何高速转储、索引和第7层网络流量过滤?
- 爬虫 | JS逆向某验滑动加密(二)
- 闲聊 Kotlin-Native (0) - 我们为什么应该关注一下 Kotlin Native?
- 哈佛大学单细胞课程|笔记汇总 (五)
- 通过源码理解IGMP v1的实现(基于linux1.2.13)