什么是springboot-starter
springboot-starter无处不在,相信开发过springboot项目的小伙伴们都使用过springboot-starter,例如我们在整合Redis的时候会使用到spring-boot-starter-data-redis,它封装RedisTemplate模板类,我们只需在application.yml 中配置一些属性就可以使用,非常方便。
是否曾想过为什么我们在 application.yml 中配置一些属性就可以直接在程序中注入并使用这些模板类呢? (相信你看完以下内容整体流程就非常清晰)
springboot-starter的好处
- 开箱即用,我们只需要简单的配置便可使用,提高研发人员的工作效率
- 屏蔽底层的具体细节,暴露配置属性及方法,减少学习使用成本
- 统一封装,统一管理
sptingboot-starter的作用
自定义starter的场景很多,例如:
- 发送短信需要对接不同服务商,可以封装一个发送短信的starter,屏蔽对接的细节,开发者只需简单配置就可使用该服务商发送短信
- OSS存储对接不同的云服务商,例如阿里云、七牛云、腾讯云等等,跟对接短信服务商类似
- 企业中间件的封装
自定义一个简单的starter
在yml中配置值,请求starter封装方法返回yml中的配置值,下面例子说明,非常简单,适合新手教学
-
创建一个SpringBoot项目
-
删除该项目不需要的启动类和配置文件,创建 META-INF/spring.factories 文件,文件目录结构以下图为准
-
编写TestClient类,该类的主要是供其他开发者使用,可以类比成RedisTemplate模板类,逻辑非常简单只是提供了一个getName方法,如下图所示
-
编写TestConfig配置类,让TestClient类加入到Spring容器中,@ConfigurationProperties作用读取 yml 文件中的配置设置到被此注解标注的类属性,如下图所示
-
在spring.factories文件中,配置开发者自定义的configuration类,SpringBoot 能扫描到我们的 starter 注入 Bean,这是 SpringBoot 官方约定的写法,如下图所示
-
最终的目录结构如下,如下图所示
-
执行maven的install命令,让我们自定义好的starter类打包到本地仓库中,如下图所示
-
这时我们使用另外一个SpringBoot项目引入该starter,如下图所示
-
在yml中配置值,并编写测试类,如下图所示
-
启动当前项目,当我们在浏览器上请求getName方法时就显示出我们在yml中配置的configName值,如下图所示