美文网首页
如何写业务sdk才能让使用者无需扫描包而直接使用(类似自定义st

如何写业务sdk才能让使用者无需扫描包而直接使用(类似自定义st

作者: chanyi | 来源:发表于2020-07-19 19:36 被阅读0次

    1、问题分析

    在实际的开发中,我们经常需要将自己负责的公共代码封装为一个sdk,提供给其他同事使用。
    但是如果我们的包和使用者自己业务的包不同路径,那么,
    使用者就需要通过@componentScan注解扫描我们自己的sdk包路径才能将我们sdk包中的类装载到IOC容器中。
    可是我们在使用其他第三方的包时,也无需手动扫描第三方的包。他们是如何做到的呢?
    以spring-boot-admin为例:


    spring-boot-admin

    spring boot admin 的包路径是de.codecentric,可是我们在使用springbootadmin时并没有在自己的项目上去手动扫描这个包,其中原因在于springbootadmin项目定义了一个starter包,starter包下META-INF目录下定义了文件spring.factories。spring.factories文件中通过配置自动导入了包:de.codecentric.boot.admin.client.config.SpringBootAdminClientAutoConfiguration

    org.springframework.boot.autoconfigure.EnableAutoConfiguration=
    de.codecentric.boot.admin.client.config.SpringBootAdminClientAutoConfiguration
    

    而SpringBootAdminClientAutoConfiguration中通过@Bean注解注入了相应的类
    所以我们可以参考这样的方式,也让自己的sdk可以实现自动扫描包的效果

    2、项目实例

    例如我们的项目usercenter,所在的包为com.usercenter
    那么我们只需要在sdk的resources目录下建文件夹META-INF文件,添加文件spring.factories,然后填写配置

    org.springframework.boot.autoconfigure.EnableAutoConfiguration = com.usercenter.UserCenterSDKAutoConfiguration
    

    UserCenterSDKAutoConfiguration代码:

    @Configuration
    @ComponentScan(value = "com.usercenter")
    public class UserCenterSDKAutoConfiguration {
    
    }
    

    如此即可!

    相关文章

      网友评论

          本文标题:如何写业务sdk才能让使用者无需扫描包而直接使用(类似自定义st

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