如果我们系统中想要拥有自动配置的功能,可以自己编写一个starter (启动器),想想就觉得很酷,因为这意味着我们不仅有自己定义的自动配的功能,而且具有更通用的耦合度更低的配置。
以一个简单功能为例:浏览器发送 sayHello 请求,服务器接受请求并处理,响应 Hello 。
首先我们看下工程结构:
helloworld-spring-boot-starter-autoconfigure(以下简称autoconfigure):该模块用来实现 Helloworld 的自动配置功能,它的打包方式为 jar;
helloworld-spring-boot-starter(以下简称starter):该模块的打包方式是 jar,依赖 autoconfigure 模块,它不写任何代码,只做自动配置包的自动引入,如果要使用 helloworld 自动配置功能,只要在 pom 文件中引入 starter 模块即可:
<dependency>
<groupId>com.seagetech.spring.boot</groupId>
<artifactId>helloworld-spring-boot-starter</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
1 项目工程的创建
1.1 创建Empty Project
1) 新建一个空的项目,如下图,点击Next
2) 输入项目名称以及选择项目存放路径,点击Finish
1.2 创建starter模块
1) 在1.1节中新建的空项目基础上新建一个Module
2) 选择Maven,点击Next
3) 输入GroupId、ArtifactId 和 Version 信息,点击Finish
4) 由于这个模块只做自动配置包的引入,所有删除 src 下的包,最终项目结构如下:
pom.xml 文件:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.seagetech.spring.boot</groupId>
<artifactId>helloworld-spring-boot-starter</artifactId>
<version>1.0-SNAPSHOT</version>
</project>
1.3 创建 autoconfigure 模块
1) 按1.2节第1步,新建一个 Module,并选择 Spring Initializr,点击Next
2) 输入项目相关信息,如下图所示: