在前面两章 SpringBoot入门 、SpringBoot自动设置道理 的进修后,我们对如何建设一个 SpringBoot 项目、SpringBoot 的运行道理以及自动设置等都有了必然的相识。假如我们系统中也想要拥有自动设置的成果,可以本身编写一个starter (启动器),想想就以为很酷,因为这意味着我们不只有本身界说的自动配的成果,并且具有更通用的耦合度更低的设置。
照旧以第一章开头的简朴成果为例:欣赏器发送 sayHello 请求,处事器接管请求并处理惩罚,响应 Hello 。
首先我们看下工程布局:
昆山软件定制开拓 ies 中设置 hello.msg 属性时" class="aligncenter size-full wp-image-30611" title="springboot-3-1" src="/uploads/allimg/c181123/154291D13RJ0-13325.png" />
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) 新建一个空的项目,如下图,点击Next
昆山软件定制开拓 ies 中设置 hello.msg 属性时" class="aligncenter size-large wp-image-30612" title="springboot-3-2" src="/uploads/allimg/c181123/154291D13WC0-25209.png" />
2) 输入项目名称以及选择项目存放路径,点击Finish
昆山软件定制开拓 ies 中设置 hello.msg 属性时" class="aligncenter size-large wp-image-30613" title="springboot-3-3" src="/uploads/allimg/c181123/154291D1393410-33059.png" />
1) 在1.1节中新建的空项目基本上新建一个Module
昆山软件定制开拓 ies 中设置 hello.msg 属性时" class="aligncenter size-full wp-image-30614" title="springboot-3-4" src="/uploads/allimg/c181123/154291D139D20-4T19.png" />
2) 选择Maven,点击Next
昆山软件定制开拓 ies 中设置 hello.msg 属性时" class="aligncenter size-large wp-image-30615" title="springboot-3-5" src="/uploads/allimg/c181123/154291D1400430-5E11.png" />
3) 输入GroupId、ArtifactId 和 Version 信息,点击Finish
昆山软件定制开拓 ies 中设置 hello.msg 属性时" class="aligncenter size-large wp-image-30616" title="springboot-3-6" src="/uploads/allimg/c181123/154291D1405410-CT5.png" />
4) 由于这个模块只做自动设置包的引入,所有删除 src 下的包,最终项目布局如下:
昆山软件定制开拓 ies 中设置 hello.msg 属性时" class="aligncenter size-full wp-image-30617" title="springboot-3-7" src="/uploads/allimg/c181123/154291D14113Z-L122.png" />
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) 按1.2节第1步,新建一个 Module,并选择 Spring Initializr,点击Next
昆山软件定制开拓 ies 中设置 hello.msg 属性时" class="aligncenter size-large wp-image-30618" title="springboot-3-8" src="/uploads/allimg/c181123/154291D14130-U4N.png" />
2) 输入项目相关信息,如下图所示:
昆山软件定制开拓 ies 中设置 hello.msg 属性时" class="aligncenter size-large wp-image-30619" title="springboot-3-9" src="/uploads/allimg/c181123/154291D141G40-93926.png" />
3) 选择依赖,我们这里只选择web场景的依赖,点击Next
昆山软件定制开拓 ies 中设置 hello.msg 属性时" class="aligncenter size-large wp-image-30620" title="springboot-3-10" src="/uploads/allimg/c181123/154291D1426060-101c9.png" />
4) 默认,不需要窜改,点击Finish
昆山软件定制开拓 ies 中设置 hello.msg 属性时" class="aligncenter size-large wp-image-30621" title="springboot-3-11" src="/uploads/allimg/c181123/154291D1431120-115922.png" />
4) 删除 SpringBoot 自动建设的主设置类、resources 下所有文件(夹)以及 test 文件夹,劳务派遣管理系统,最终项目布局如下:
昆山软件定制开拓 ies 中设置 hello.msg 属性时" class="aligncenter size-full wp-image-30622" title="springboot-3-12" src="/uploads/allimg/c181123/154291D14354P-126417.png" />
pom.xml(已删除 test 测试模块的自动设置包以及 build 下的 Maven 插件)
<?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-autoconfigure</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>helloworld-spring-boot-starter-autoconfigure</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.0.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies> </project>