因为在实际的项目开发当中,我们可能会用到很多第三方的技术,但是并不是所有的第三方的技术官方都给我们提供了与SpringBoot整合的starter起步依赖,但是这些技术又非常的通用,在很多项目组当中都在使用。这时我们就可以自定义一个spring-boot-starter .Spring官方建议非官方Starter命名应遵循{name}-spring-boot-starter的格式,这里就自定义一个qiniu-oss-spring-boot-starter
需求:自定义qiniu-oss-spring-boot-starter,完成七牛云OSS操作工具类七牛云OSSUtils的自动配置。
目标:引入起步依赖引入之后,要想使用七牛云OSS,注入七牛云OSSUtils直接使用即可。
步骤:
第1步:创建自定义starter模块(进行依赖管理)
把七牛云OSS所有的依赖统一管理起来
第2步:创建autoconfigure模块
在starter中引入autoconfigure (使用时只需要引入starter起步依赖即可)
第3步:在autoconfigure中完成自动配置
定义一个自动配置类,在自动配置类中将所要配置的bean都提前配置好
定义配置文件,把自动配置类的全类名定义在配置文件中
自定义starter具体步骤
首先创建两个Maven工程:
1).qiniuyun-oss-spring-boot-starter模块
创建完starter模块后,删除多余的文件,最终保留内容如下:
删除pom.xml文件多余的内容:
2). qiniuyun-oss-spring-boot-autoconfigure模块
创建完autoconfigure模块后,删除多余的文件,最终保留内容如下
删除pom.xml文件中多余的内容:
在starter的pom中来引入autoconfigure的坐标
3).前两步已经完成了,接下来是最关键的就是第三步:在autoconfigure模块当中来完成自动配置操作。
将项目中所使用的qiniuyunOSS工具类相关代码直接拷贝到autoconfigure模块下,然后进行改造。
拷贝过来后,还缺失一些相关的依赖,需要把相关依赖也拷贝过来:
下面我们就要定义一个自动配置类了,在自动配置类当中来声明qiniuyunOSSUtils的bean对象。
qiniuyunOSSProperties类:
在qiniuyun-oss-spring-boot-autoconfigure模块中的resources下,新建自动配置文件:
-
META-INF/spring.factories
spring.factories文件是Spring Boot自动配置的核心文件之一,在Spring Boot启动时,它会扫描classpath下所有的spring.factories文件,不仅仅加载spring的,第三方和自定义的也会加载 。
spring.factories文件是一组组key=value的形式,配置的key为org.springframework.boot.autoconfigure.EnableAutoConfiguration,value是是自己定义的配置类全类名.最后将使用install命令分别将starter和autoconfigure放到仓库
到此starter已经配置好了,使用时只需要在项目中导入starter的坐标即可 .