当前位置:首页 >> 中药大全 >> 深入剖析 Spring Boot 的 SPI 前提!

深入剖析 Spring Boot 的 SPI 前提!

发布时间:2024-01-13

id getConnection() { System.out.println("this is mysql database"); }}

1、在概念设计的META-INF书目下,新增spring.factories档案

2、填写系统性的模块信息,内容如下:

com.skywares.fw.juc.springspi.DataBaseSPI = com.skywares.fw.juc.springspi.DB2DataBase, com.skywares.fw.juc.springspi.MysqlDataBase

说明多个发挥作用有别于逗号分隔。

系统性测试类

public class SpringSPITest{ public static void main(String[] args) { List dataBaseSPIs =SpringFactoriesLoader.loadFactories(DataBaseSPI.class, Thread.currentThread().getContextClassLoader()); for(DataBaseSPI datBaseSPI:dataBaseSPIs){ datBaseSPI.getConnection(); } }}

输入结果

从请注意之前我们看出,Spring 有别于spring.factories发挥作用SPI与ja发挥作用SPI颇为相同,但是spring的spi形式针对ja的spi同步进行的系统性优化总括如下:

Ja SPI是一个维修服务发放模块相异一个配置档案,配置档案之前存放意味著模块的所有发挥作用类,多个维修服务发放模块相异多个配置档案,所有配置都在services书目下;Spring factories SPI是一个spring.factories配置档案存放多个模块及相异的发挥作用类,以模块仅有限量名作为key,发挥作用类作为value来配置,多个发挥作用类用逗号隔开,大部分spring.factories一个配置档案。

那么spring是如何通过加载spring.factories来发挥作用SpI的呢?我们可以通过程式码来进一步系统性。

程式码系统性

说明:loadFactoryNames解析spring.factories档案之前登录模块的发挥作用类的仅有限量名,实际发挥作用如下:

说明:获取所有jar自带之前META-INF/spring.factories档案路径,以枚举值前往。遍历spring.factories档案路径,逐个加载解析,整合factoryClass类型的发挥作用类重新命名,获取到发挥作用类的仅有类重新命名后同步进行类的实例话配置,其系统性程式码如下:

说明:实例化是通过太阳光来发挥作用相异的初始化。

作者:剑圣无痕

来源:

用什么抗衰老产品好
积大制药
前列腺增生尿不尽怎么治疗效果好
康恩贝肠炎宁颗粒止泻效果怎么样择
宁波汽车抵押贷款
标签:
友情链接: