springboot 自定义 starters
思路:
1、这个场景需要使用到的依赖是什么?
2、如何编写自动配置?
1、模式
创建2个maven项目。
- 启动器(starter)
- 启动器模块是一个空的jar包,它仅提供辅助性依赖管理,这些依赖可能用于自动装配,或者其他类库。
- 自动配置模块(autoconfigure)
- 启动器依赖的自动配置。这样别人只需要引入(starter)即可。
2、命名
官方命名是:spring-boot-starter-xxx
我们自定义用:xxx-spring-boot-starter
3、快速开始
- 3.1、 创建一个空的project
使用maven初始化器创建一个maven模块:
使用spring initializr创建一个springboot模块:
不选中任何模块,可以选择springboot的版本,这里使用的是默认的版本:
项目结构:
在启动器模块,引入自动配置的坐标依赖:
把没用的目录结构都删掉,最终编写前比较整洁的目录结构:
- 3.2、编写业务场景
- 编写xxProperties配置类,并用@ConfigurationProperties注解标注。
这里爆红无影响。
相当于写了属性,用来绑定配置文件中的: zxx.hello.prefix
、zxx.hello.suffix
。
- 编写需要用到这个配置类的xxService,同时要为这个xxService定义一个包含xxProperties的构造器。
- 要让它起效果,还需要编写一个自动配置类。
- 在 resources资源目录下新建 /META-INF/spring.factories 文件,它会在springboot项目启动时,加载上面的自动配置类,这样才生效。
- 把这2个模块,安装到maven仓库中,这样别人就可以通过坐标来引入了:
4、测试
- 新建一个demo项目,选中web模块:
- 引入我们自己定义的starter:
<dependency>
<groupId>com.zxx.starter</groupId>
<artifactId>zxx-spring-boot-starter</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
这时我们就可以看到,此时的依赖已经引入到我们的demo工程里了:
- 写一个controller测试一下:
在application.properties配置文件中配置:
浏览器中访问: