美文网首页
基于spring factories机制开发SDK

基于spring factories机制开发SDK

作者: 上尤流苏 | 来源:发表于2020-03-17 16:45 被阅读0次

    SPI机制:为某个接口寻找服务实现的机制

    java SPI就是提供这样的一个机制 ,需要在META-INF目录中设置接口的实现,以实现服务接口与实现的解耦。第三方服务厂商或者插件服务,可以依据SPI机制,实现功能扩展。

    在Spring中也有一种类似与Java SPI的加载机制。它在META-INF/spring.factories文件中配置接口的实现类,我们成为Spring factories机制,基于此我们可以自定义stater或SDK供他人使用,项目只在pom.xml中引入SDK,无须配置即可实现功能集成。

    最近的需求为例,需要实现授权功能SDK,以供其他产品使用

    项目目录结构如下

    第一步:在包名root目录下创建自动配置类 EsbrSdkAutoConfig

    内容如下:添加

    @Configuration

    @ComponentScan(basePackageClasses = EsbrSdkAutoConfig.class)

    标识此类为配置类,并配置扫描路径为当前类

    第二步;    在resources/META-IN目录下,创建spring.factories文件

    内容如下:

    将org.springframework.boot.autoconfigure.EnableAutoConfiguration的自动配置为值设置为第一步的EsbrSdkAutoConfig的全限定类名(包名+类名)

    第三步:编写SDK的Service

    通过以上三步,即可基于Spring factories机制完成自定义Starter,在其他项目pom.xml中引入该starter即可

    是不是很简单,下面讲解下原理

    spring-core包里定义了SpringFactoriesLoader类,这个类实现了检索META-INF/spring.factories文件中的配置,

    并通过loadFactoryNames方法()获取其接口类的名称

    在这个方法中会遍历整个ClassLoader中所有jar包下的spring.factories文件。也就是说我们可以在自己的jar中配置spring.factories文件,不会影响到其它地方的配置,也不会被别人的配置覆盖。

    将org.springframework.boot.autoconfigure.EnableAutoConfiguration=cn.org.bjca.esbr.sdk.EsbrSdkAutoConfig

    基于springboot自动配置,会扫描并初始化EsbrSdkAutoConfig类,并将EsbrSdkAutoConfig作为basepackage,扫描改类及其该类子包下的类,加载到spring容器。

    相关文章

      网友评论

          本文标题:基于spring factories机制开发SDK

          本文链接:https://www.haomeiwen.com/subject/xkityhtx.html