starter:场景启动器
xxx-autoconfigure:自动配置包
1.编写一个starter,没有代码,只是用来说明需要哪些依赖,其中引入真正场景的自动配置包
2.编写一个自动配置包,完成自动配置

1. 创建一个空项目

  1. ![image.png](https://cdn.nlark.com/yuque/0/2021/png/22162061/1626873013786-a020d6d8-7edd-4270-a583-a8940ade00c0.png#align=left&display=inline&height=139&margin=%5Bobject%20Object%5D&name=image.png&originHeight=185&originWidth=607&size=75479&status=done&style=none&width=455)

2. 添加两个模块

2.1 starter模块

使用maven创建,以后让别人引用
image.png

2.2 自动配置模块

使用spring初始化向导,做好自动配置功能
image.png

3. 模块中内容

3.1 starter模块

在starter的pom.xml中引入自动配置的依赖
image.png

3.2 autoconfigure模块

1.删除模块里没用的东西(test文件夹、配置文件、主程序)
2.配置功能场景,比如HelloService
image.png
3.写自动配置类
(以后项目的容器中没有才使用这个自动配置——@ConditionalOnMissingBean)
(自动绑定HelloProperties中的属性——@EnableConfigurationProperties)
image.png
4.创建一个META-INF文件夹,其下写一个spring.factories,在这里面指定自动配置包下的哪个自动配置类(放到就是类的全路径)
image.png
image.png

4. 打包

1.使用maven下的plugins的clean+install对自动配置包打包(相当于安装到本地仓库)
2.使用maven把starter也打包放到仓库,别的项目就可以引入了

5. 别的项目引入此starter

在别的项目的pom下引入starter的依赖,成功使用自定义的自动配置
image.png