一、概述
约定优于配置是一种软件设计范式,spring boot便是遵从这一范式设计的,它去除了spring框架带来的各种复杂的配置,利用自动装配功能为各种属性配置好默认值,开发者只需要关注私有配置便可以快速高效的搭建一个spring boot项目。
今天这篇我们简单的自定义一个spring-boot-starter项目,让大家感受下spring boot自动装配的强大。
二、项目构建
首先我们应当创建一个项目,项目的命名方式一般为xxx-spring-boot-starter,该命名表示此项目并非spring官方发布的,例如mybatis-spring-boot-starter,如果是spring官方发布的,命名方式一般都是spring-boot-starter-xxx,例如spring-boot-starter-web。
我们创建一个maven项目名叫custom-spring-boot-starter,在pom.xml文件中引入spring-boot-autoconfigure,在这里我用的版本是2.2.1,如下图
接着,我们创建customeProperties类,用来映射配置文件对应的值,如下图
然后我们创建CustomAutoConfiguration类,这是自动装配的入口类,我这里设置的默认值username:admin,password:123456,如下图所示
最后我们在resource下面创建META-INF文件夹,在该文件下创建spring.factories文件,在该文件中输入
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.gzh.custom.spring.boot.autoconfigure.CustomAutoConfiguration,如下图所示
到这里我们的custom-spring-boot-starter已经创建完毕,接下来我们新建一个spring boot项目,将custom-spring-boot-starter引入到spring boot项目中观察它自动配置的效果。
三、验证测试
创建spring boot项目,我们命名为gzh-springboot,在pom.xml文件中引入spring-boot-starter-web和custom-spring-boot-starter两个依赖,如下图:
添加springboot启动类,我命名为GzhSpringbootApplication,内容如下:
添加TestController,用来测试,内容如下:
接着我们就启动这个项目,观察控制台,控制台打印信息如下所示:
我们可以看到我们的custom-spring-boot-starter已经自动加载进去了,接下来我们请求test链接看看效果
这是我们自定义starter设置的默认值,接下来我们在application.yml文件中配置相关属性,文件内容配置如下
接着我们重启项目,再访问test链接,结果如下图所示
通过结果我们发现我们的自定义starter已经成功实现,感兴趣的朋友可以在这个基础上扩展出一些功能,让其更实用。
四、小结
为什么要自定义starter呢?因为在开发过程中我们经常会遇到一些独立于业务模块之外的功能,这个时候我们就可以将这些功能封装成一个starter,然后其他模块要使用时只需要在pom文件中引入该模块就可以使用了,例如我们的日志模块,就可以这样封装。
本篇文章我们利用spring boot的自动装配功能实现了一个custom-spring-boot-starter,那么spring boot如何实现自动装配功能的?以及自动装配的实现原理是什么?后面有时间我会对spring boot的源码进行分析一遍。
感兴趣的读者朋友可以 关注本公众号,和我们一起学习探究。
本人因所学有限,如有错误之处,望请各位指正!