- 1 SpringBoot 开发起步
- 2 Gradle 构建管理
- 2.1 Spring Boot Gradle 插件参考指南
- 2.2 dependency-management 插件
- 2.3 spring-boot-gradle-plugin(旧式写法)
- 2.4 多模块拆分
- 2.4.1 概述
- 2.4.2 IDEA 工具
- 2.4.3 microboot 项目(删除 src 目录)
- 2.4.4 修改 Gradle Wrapper 的版本
- 2.4.5 microboot 项目(配置项目的相关属性)
- 2.4.6 microboot 项目(创建 dependencies.gradle 文件)
- 2.4.7 microboot 项目(修改 build.gradle 配置文件)
- 2.4.8 microboot 项目(创建一个 microboot-common 子模块)
- 2.4.9 microboot 项目(创建一个 microboot-web 子模块)
- 2.4.10 microboot 项目(进行子模块的定义)
- 2.4.11 microboot-web 项目
1 SpringBoot 开发起步
1.1 概述
- 如果要进行 SpringBoot 项目的开发肯定需要构建工具 Maven 或 Gradle ,本次使用 Gradle 作为构建工具。
- 开发环境:
- JDK 1.8 。
- IDEA 2021+ 。
- Gradle 6.5+ 。
1.2 构建 SpringBoot 应用
1.2.1 IDEA 工具创建 Gradle 项目
- 基于 IDEA 创建一个 Gradle 项目,这个Gradle 项目所选择的类型是 Java 。
- 随后要输入要创建的项目名称,本次的项目主要是进行了一个最简单的单实例应用,那么可以随意输入一个项目名称:firstboot 。
1..2.2 修改 Gradle Wrapper 的版本
- 程序执行命令:
gradle wrapper --gradle-version 6.5
- 程序执行结果:
1.2.3 firstboot 项目
- 本次由于只是一个基础的环境,所以只需要修改 build.gradle 配置文件即可:
plugins {
id 'java' // Java 插件
}
group 'com.github.fairy.era' // 组织名称
version '1.0' // 版本号
sourceCompatibility = JavaVersion.VERSION_1_8 // 本次的项目都是基于 JDK-8 的版本
targetCompatibility = JavaVersion.VERSION_1_8 // 本次的项目都是基于 JDK-8 的版本
repositories { // 仓库配置
maven { // 阿里云的 Maven 仓库
url 'https://maven.aliyun.com/repository/public/'
}
mavenCentral() // 默认情况下所提供的是 Maven 的中央仓库
}
dependencies { // 依赖配置
/* junit 5 */
testImplementation group: 'org.junit.jupiter', name: 'junit-jupiter', version: '5.8.2'
/* spring-boot-starter-web */
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-web', version: '2.4.3'
}
test {
useJUnitPlatform()
}
1.3 SpringBoot 应用
1.3.1 概述
- SpringBoot(spring-boot-starter-web) 本质上就属于一个加强版的 SpringMVC,我们在 SpringMVC 中如何编写代码的,那么在 SpringBoot 中也可以直接进行代码的编写。
1.3.2 启动类
package com.github.fairy.era;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* 启动类
*
* @author 许大仙
* @version 1.0
* @since 2021-12-31 09:14
*/
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
1.3.3 Handler 类
package com.github.fairy.era.web;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author 许大仙
* @version 1.0
* @since 2021-12-31 09:22
*/
@RestController
public class DemoHandler {
@GetMapping(value = "/demo")
public String demo() {
return "你好啊,SpringBoot";
}
}
1.3.4 启动 SpringBoot 项目
- 启动 SpringBoot 项目:
- 实际上这个时候在项目启动之后就会出现 一些 WEB 容器的信息(此时没有将项目 部署到 WEB 容器中,因为 SpringBoot 内置了 WEB 容器,所以也是可以直接启动的): | 描述 | 信息 | | —- | —- | | 获取程序信息 | Starting Application using Java 1.8.0_131 on xxx with PID 21700 | | 自动加载 profile | No active profile set, falling back to default profiles: default | | Tomcat 启动 | Tomcat initialized with port(s): 8080 (http) | | 服务正常启动 | Starting service [Tomcat] | | 启动 Servlet 引擎 | Starting Servlet engine: [Apache Tomcat/9.0.43] | | 初始化 Spring 内置的 WEB 容器 | Initializing Spring embedded WebApplicationContext | | 根容器启动耗时 | Root WebApplicationContext: initialization completed in 519 ms | | 初始化线程池 | Initializing ExecutorService ‘applicationTaskExecutor’ | | ContextPath | Tomcat started on port(s): 8080 (http) with context path ‘’ | | JVM 初始化耗时 | Started Application in 0.977 seconds (JVM running for 1.417) |
- 随着后续项目不断的引入更多的组件,那么以上的信息一定会做出变更。
1.3.5 访问
- 通过浏览器输入 http://localhost:8080/demo 即可。
1.3.6 总结
- 在传统的 SpringMVC 的时代里面,如果要想实现与之完全相同的输出操作效果,也是可以实现的,但是所付出的代码就是繁琐的配置以及一系列配置文件的定义。
- 如果使用 SpringBoot 进行开发,那么这些繁琐的配置以及一系列配置文件的定义就彻底的消失了。
1.4 SpringBoot 注解分析
1.4.1 概述
- 现在经过了自己的不断努力已经成功的实现了第一个 SpringBoot 应用程序,这样肯定是好事,如果我们连程序都没搞起来又谈何深入呢?首先对于当前的程序代码需要对其注解的作用进行说明。
1.4.2 注解说明
- 示例:获取之前的代码
package com.github.fairy.era;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* 启动类
*
* @author 许大仙
* @version 1.0
* @since 2021-12-31 09:14
*/
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
package com.github.fairy.era.web;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author 许大仙
* @version 1.0
* @since 2021-12-31 09:22
*/
@RestController
public class DemoHandler {
@GetMapping(value = "/demo")
public String demo() {
return "你好啊,SpringBoot";
}
}
- 在以上的程序之中存在如下的注解,具体的作用进行分析:
- 【SpringMVC 提供】:
@RestController
相当于@Controller
+@ResponseBody
。@Controller
注解内部包含了一个@Component
注解,是在进行包扫描处理的时候用于实现控制层处理类定义的(疑问?我们并没有配置包扫描,那么 Handler 类是怎么装配进 Spring 容器的?因为 SpringBoot 采用的设计思想是“零配置”
)@ResponseBody
直接进行对象的响应(在 SpringMVC 里面默认采用的转换组件为 Jackson)。
- 【SpringMVC 提供】:
@GetMapping
可以在类上定义父路径,也可以在方法上定义子路径。 - 【SpringBoot 提供】:
@SpringBootApplication
相当于@SpringBootConfiguration
+@EnableAutoConfiguration
+@ComponentScan
。@SpringBootConfiguration
表明这是一个配置类。@EnableAutoConfiguration
开启自动配置。@ComponentScan
组件扫描。
2 Gradle 构建管理
2.1 Spring Boot Gradle 插件参考指南
- 官网。
2.2 dependency-management 插件
2.2.1 概述
- 对于当前的项目来说,是基于 Gradle 实现的程序开发,那么既然要基于 Gradle 实现程序开发,就必须去熟悉 Gradle 对 SpringBoot 项目的支持,打开 build.gradle 配置文件,此时的配置文件的内容如下:
plugins {
id 'java' // Java 插件
}
group 'com.github.fairy.era' // 组织名称
version '1.0' // 版本号
sourceCompatibility = JavaVersion.VERSION_1_8 // 本次的项目都是基于 JDK-8 的版本
targetCompatibility = JavaVersion.VERSION_1_8 // 本次的项目都是基于 JDK-8 的版本
repositories { // 仓库配置
maven { // 阿里云的 Maven 仓库
url 'https://maven.aliyun.com/repository/public/'
}
mavenCentral() // 默认情况下所提供的是 Maven 的中央仓库
}
dependencies { // 依赖配置
/* junit 5 */
testImplementation group: 'org.junit.jupiter', name: 'junit-jupiter', version: '5.8.2'
/* spring-boot-starter-web */
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-web', version: '2.4.3'
}
test {
useJUnitPlatform()
}
- 如果按照构建工具的标准配置来讲,此时的配置是不合理的,原因就在于应该将版本号编写在依赖库的引入之外,这样如果有需要就可以直接修改版本号而实现版本的更新。
- 可以考虑基于 Groovy 实现一个版本的变量定义,修改 build.gradle 配置文件:
// 修改内容如下所示
def springBootStarterWebVersion = '2.4.3' // 版本变量的定义
def junitJupiterVersion = '5.8.2' // 版本变量的定义
dependencies { // 依赖配置
/* junit 5 */
testImplementation group: 'org.junit.jupiter', name: 'junit-jupiter', version: "$junitJupiterVersion" // 版本变量的引用
/* spring-boot-starter-web */
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-web', version: "$springBootStarterWebVersion" // 版本变量的引用
}
test {
useJUnitPlatform()
}
- 但是如果采用的是此类的配置方式就会存在有一个比较麻烦的问题,因为在 SpringBoot 里面要引入的相关的 starters 依赖库是非常多的(SpringBoot 官方文档告诉我们的),就可能导致该变量被引用无数次,这样的项目结构管理就有些重复了。
- 如果要想解决这个重复的 spring-boot-starter-xxx 依赖库的版本配置问题,那么最佳的做法就考虑引入
dependency-management
插件。
2.2.2 Maven 仓库
- 通过 Maven 的中央仓库查询插件的当前版本号:
implementation group: 'io.spring.dependency-management', name: 'io.spring.dependency-management.gradle.plugin', version: '1.0.11.RELEASE', ext: 'pom'
2.2.3 项目配置插件
- 修改 build.gradle 配置文件,设置插件的引用:
plugins {
id 'java' // Java 插件
id 'org.springframework.boot' version '2.4.3' // 将版本编号配置在插件内部
id 'io.spring.dependency-management' version '1.0.11.RELEASE' // 由此插件负责版本号的维护
}
- 修改 build.gradle 配置文件,将 SpringBoot 的 starter 的 version 删除:
dependencies { // 依赖配置
/* junit 5 */
testImplementation group: 'org.junit.jupiter', name: 'junit-jupiter', version: '5.8.2'
/* spring-boot-starter-web */
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-web'
}
- 完整的 build.gradle 配置文件内容如下:
plugins {
id 'java' // Java 插件
id 'org.springframework.boot' version '2.4.3' // 将版本编号配置在插件内部
id 'io.spring.dependency-management' version '1.0.11.RELEASE' // 由此插件负责版本号的维护
}
group 'com.github.fairy.era' // 组织名称
version '1.0' // 版本号
sourceCompatibility = JavaVersion.VERSION_1_8 // 本次的项目都是基于 JDK-8 的版本
targetCompatibility = JavaVersion.VERSION_1_8 // 本次的项目都是基于 JDK-8 的版本
repositories { // 仓库配置
maven { // 阿里云的 Maven 仓库
url 'https://maven.aliyun.com/repository/public/'
}
mavenCentral() // 默认情况下所提供的是 Maven 的中央仓库
}
dependencies { // 依赖配置
/* junit 5 */
testImplementation group: 'org.junit.jupiter', name: 'junit-jupiter', version: '5.8.2'
/* spring-boot-starter-web */
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-web'
}
test {
useJUnitPlatform()
}
- 此时没有在项目之中引入依赖库的位置上继续进行版本号的定义,而是在顶部将所有的版本号都固定好了。
2.3 spring-boot-gradle-plugin(旧式写法)
- 对于当前的项目来说,即使不使用 spring-boot-gradle-plugin 也是可以实现 SpringBoot 项目的开发,当 Gradle 项目中引入了如下的插件之后:
plugins {
...
id 'io.spring.dependency-management' version '1.0.11.RELEASE' // 由此插件负责版本号的维护
}
- 实际上 Gradle 里面就会增加一些任务了:
- 此时存在有了一个 bootRun 任务,这个任务就是让当前的项目以 SpringBoot 的方式运行。
- 程序执行命令:
gradle bootRun
- 程序运行结果:
- 也可以使用 Gradle 旧式的写法来进行 SpringBoot 项目依赖的锁定,那么此时就可以考虑通过一个专属的插件
spring-boot-gradle-plugin
来完成,修改 build.gradle 配置文件:
buildscript { // 定义脚本使用资源
repositories { // 脚本资源仓库
maven {
url 'https://maven.aliyun.com/repository/gradle-plugin'
}
}
dependencies { // 依赖管理
classpath 'org.springframework.boot:spring-boot-gradle-plugin:2.4.3'
}
}
plugins {
id 'java' // Java 插件
// id 'org.springframework.boot' version '2.4.3' // 将版本编号配置在插件内部
// id 'io.spring.dependency-management' version '1.0.11.RELEASE' // 由此插件负责版本号的维护
}
apply plugin: 'org.springframework.boot' // 引用之前的两个插件
apply plugin: 'io.spring.dependency-management' // 引用之前的两个插件
注意:此时你会感到疑惑 plugins 和 buildscript + apply plugin ?
- ① plugins 是后来添加的特性,换言之,buildscript + apply plugin 是早期的语法(官网地址)。
- ② plugins 中指定的插件必须是 https://plugins.gradle.org/ 存在的。
- ③ apply plugin 可以用在 allprojects 和 subprojects 中。
- 完整的 build.gradle 文件的内容如下:
buildscript { // 定义脚本使用资源
repositories { // 脚本资源仓库
maven {
url 'https://maven.aliyun.com/repository/gradle-plugin'
}
}
dependencies { // 依赖管理
classpath 'org.springframework.boot:spring-boot-gradle-plugin:2.4.3'
}
}
plugins {
id 'java' // Java 插件
// id 'org.springframework.boot' version '2.4.3' // 将版本编号配置在插件内部
// id 'io.spring.dependency-management' version '1.0.11.RELEASE' // 由此插件负责版本号的维护
}
apply plugin: 'org.springframework.boot' // 引用之前的两个插件
apply plugin: 'io.spring.dependency-management' // 引用之前的两个插件
group 'com.github.fairy.era' // 组织名称
version '1.0' // 版本号
sourceCompatibility = JavaVersion.VERSION_1_8 // 本次的项目都是基于 JDK-8 的版本
targetCompatibility = JavaVersion.VERSION_1_8 // 本次的项目都是基于 JDK-8 的版本
repositories { // 仓库配置
maven { // 阿里云的 Maven 仓库
url 'https://maven.aliyun.com/repository/public/'
}
mavenCentral() // 默认情况下所提供的是 Maven 的中央仓库
}
dependencies { // 依赖配置
/* junit 5 */
testImplementation group: 'org.junit.jupiter', name: 'junit-jupiter', version: '5.8.2'
/* spring-boot-starter-web */
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-web'
}
test {
useJUnitPlatform()
}
- 现在所有和 SpringBoot 相关的有关版本编号都统一的交给了
spring-boot-gradle-plugin
来定义了,而后相关你的任务也会自动的进行关联。
2.4 多模块拆分
2.4.1 概述
- 任何一个项目都会有若干个子模块组成,所以现在虽然使用了 Gradle 搭建了一个完成的 SpringBoot 项目,但是考虑到后期项目开发的可维护性,依然需要进行父子模块的构建。
2.4.2 IDEA 工具
- 创建一个新的 Gradle 项目,名称为 microboot 。
2.4.3 microboot 项目(删除 src 目录)
- 删除 microboot 项目中的 src 目录。
2.4.4 修改 Gradle Wrapper 的版本
- 程序执行命令:
gradle wrapper --gradle-version 6.5
- 程序执行结果:略。
2.4.5 microboot 项目(配置项目的相关属性)
- 在 microboot 项目中新建 gradle.properties 文件,内容如下:
project_group=com.github.fairy.era
project_version=1.0
project_jdk=1.8
2.4.6 microboot 项目(创建 dependencies.gradle 文件)
- 在 microboot 项目中新建 dependencies.gradle 文件,其作用是实现所有项目之中依赖库的版本管理,内容如下:
ext.versions = [ // 定义所有要使用到的依赖库的版本号
springboot: '2.4.3' // SpringBoot 的版本号
]
ext.librariest = [ // 定义所有的依赖库
'spring-boot-gradle-plugin': "org.springframework.boot:spring-boot-gradle-plugin:${versions.springboot}"
]
2.4.7 microboot 项目(修改 build.gradle 配置文件)
- 修改 build.gradle 配置文件,引入相关的子配置文件:
buildscript { // 定义脚本使用资源
apply from: 'dependencies.gradle' // 引入所需要的依赖库文件
repositories { // 脚本资源仓库
maven {
url 'https://maven.aliyun.com/repository/gradle-plugin'
}
}
dependencies { // 依赖管理
classpath libraries.'spring-boot-gradle-plugin'
}
}
apply from: 'dependencies.gradle' // 引入所需要的依赖库文件
allprojects { // 所有模块/项目的通用配置
apply plugin: 'idea'
apply plugin: 'java'
apply plugin: 'java-library'
group project_group // 组织名称
version project_version // 版本号
sourceCompatibility = project_jdk // 本次的项目都是基于 JDK-8 的版本
targetCompatibility = project_jdk // 本次的项目都是基于 JDK-8 的版本
}
subprojects { // 子模块的配置
apply plugin: 'org.springframework.boot' // 将版本编号配置在插件内部
apply plugin: 'io.spring.dependency-management' // 由此插件负责版本号的维护
repositories { // 仓库配置
maven { // 阿里云的 Maven 仓库
url 'https://maven.aliyun.com/repository/public/'
}
mavenCentral() // 默认情况下所提供的是 Maven 的中央仓库
}
dependencies { // 公共依赖管理
}
test {
useJUnitPlatform()
}
sourceSets { // 建立源代码的目录集合
main {
java {
srcDirs = ['src/main/java']
}
resources {
srcDirs = ['src/main/resources']
}
}
test {
java {
srcDirs = ['src/test/java']
}
resources {
srcDirs = ['src/test/resources']
}
}
}
gradle.taskGraph.whenReady { // 在所有的操作准备好之后触发
tasks.each { task ->
if (task.name.contains('test')) { // 如果发现有 test 任务,就跳过
task.enabled = true // 当前任务不执行
}
}
}
// 最终生成的 jar 文件名称:baseName-version-classifier.extension
task sourceJar(type: Jar, dependsOn: classes) { // 定义一个源代码的打包任务,并依赖于 classes 这种 Gradle 内置的任务
archiveClassifier.set 'sources' // 文件的分类
from sourceSets.main.allSource // 所有源代码的读取路径
}
task javadocTask(type: Javadoc) {
source sourceSets.main.allJava // 定义所有的 Java 源代码的路径
}
tasks.withType(Javadoc) { // 文档生成一定要有乱码处理
options.encoding = "UTF-8"
}
tasks.withType(JavaCompile) { // 针对程序编译的任务进行配置
options.encoding = "UTF-8"
}
task javadocJar(type: Jar, dependsOn: javadocTask) { // 先生成 javadoc,才可以打包
archiveClassifier.set 'javadoc' // 文件的分类
from javadocTask.destinationDir // 通过 javaDocTask 任务中找到目标路径
}
artifacts { // 最终的打包操作任务
archives sourceJar
archives javadocJar
}
[compileJava, compileTestJava]*.options*.encoding = 'UTF-8'
}
project(':microboot-common') { // 设置子项目的配置,独享配置
dependencies { // 配置子模块依赖
}
}
project(':microboot-web') { // 设置子项目的配置,独享配置
dependencies { // 配置子模块依赖
implementation(project(':microboot-common')) // 引入其他子模块
}
gradle.taskGraph.whenReady { // 在所有的操作准备好之后触发
tasks.each { task ->
if (task.name.contains('javadoc')) { // 如果发现有 test 任务,就跳过
task.enabled = false // 当前任务不执行
}
}
}
}
2.4.8 microboot 项目(创建一个 microboot-common 子模块)
- 创建 microboot-common 子模块,这个一个公共的模块,用来定义一些公共的程序类。
- 修改 build.gradle 文件:
plugins {
id 'java'
id 'idea'
}
2.4.9 microboot 项目(创建一个 microboot-web 子模块)
- 创建一个 microboot-web 子模块,这个模块的主要作用是引用 microboot-common 子模块,并实现 WEB 程序的开发。
- 创建过程和 创建 microboot-common 子模块 类似。
- 修改 build.gradle 文件:
plugins {
id 'java'
id 'idea'
}
2.4.10 microboot 项目(进行子模块的定义)
- 修改 build.gradle 文件,增加如下的配置:
project(':microboot-common') { // 设置子项目的配置,独享配置
dependencies { // 配置子模块依赖
}
}
project(':microboot-web') { // 设置子项目的配置,独享配置
dependencies { // 配置子模块依赖
implementation(project(':microboot-common')) // 引入其他子模块
implementation 'org.springframework.boot:spring-boot-starter-web' // 引入 SpringBoot 的 web 的依赖
}
gradle.taskGraph.whenReady { // 在所有的操作准备好之后触发
tasks.each { task ->
if (task.name.contains('javadoc')) { // 如果发现有 test 任务,就跳过
task.enabled = false // 当前任务不执行
}
}
}
}
- 完整的 build.gradle 文件的内容如下:
buildscript { // 定义脚本使用资源
apply from: 'dependencies.gradle' // 引入所需要的依赖库文件
repositories { // 脚本资源仓库
maven {
url 'https://maven.aliyun.com/repository/gradle-plugin'
}
}
dependencies { // 依赖管理
classpath libraries.'spring-boot-gradle-plugin'
}
}
apply from: 'dependencies.gradle' // 引入所需要的依赖库文件
allprojects { // 所有模块/项目的通用配置
apply plugin: 'idea'
apply plugin: 'java'
apply plugin: 'java-library'
group project_group // 组织名称
version project_version // 版本号
sourceCompatibility = project_jdk // 本次的项目都是基于 JDK-8 的版本
targetCompatibility = project_jdk // 本次的项目都是基于 JDK-8 的版本
}
subprojects { // 子模块的配置
apply plugin: 'org.springframework.boot' // 将版本编号配置在插件内部
apply plugin: 'io.spring.dependency-management' // 由此插件负责版本号的维护
repositories { // 仓库配置
maven { // 阿里云的 Maven 仓库
url 'https://maven.aliyun.com/repository/public/'
}
mavenCentral() // 默认情况下所提供的是 Maven 的中央仓库
}
dependencies { // 公共依赖管理
}
test {
useJUnitPlatform()
}
sourceSets { // 建立源代码的目录集合
main {
java {
srcDirs = ['src/main/java']
}
resources {
srcDirs = ['src/main/resources']
}
}
test {
java {
srcDirs = ['src/test/java']
}
resources {
srcDirs = ['src/test/resources']
}
}
}
gradle.taskGraph.whenReady { // 在所有的操作准备好之后触发
tasks.each { task ->
if (task.name.contains('test')) { // 如果发现有 test 任务,就跳过
task.enabled = true // 当前任务不执行
}
}
}
// 最终生成的 jar 文件名称:baseName-version-classifier.extension
task sourceJar(type: Jar, dependsOn: classes) { // 定义一个源代码的打包任务,并依赖于 classes 这种 Gradle 内置的任务
archiveClassifier.set 'sources' // 文件的分类
from sourceSets.main.allSource // 所有源代码的读取路径
}
task javadocTask(type: Javadoc) {
source sourceSets.main.allJava // 定义所有的 Java 源代码的路径
}
tasks.withType(Javadoc) { // 文档生成一定要有乱码处理
options.encoding = "UTF-8"
}
tasks.withType(JavaCompile) { // 针对程序编译的任务进行配置
options.encoding = "UTF-8"
}
task javadocJar(type: Jar, dependsOn: javadocTask) { // 先生成 javadoc,才可以打包
archiveClassifier.set 'javadoc' // 文件的分类
from javadocTask.destinationDir // 通过 javaDocTask 任务中找到目标路径
}
artifacts { // 最终的打包操作任务
archives sourceJar
archives javadocJar
}
[compileJava, compileTestJava]*.options*.encoding = 'UTF-8'
}
project(':microboot-common') { // 设置子项目的配置,独享配置
dependencies { // 配置子模块依赖
}
}
project(':microboot-web') { // 设置子项目的配置,独享配置
dependencies { // 配置子模块依赖
implementation(project(':microboot-common')) // 引入其他子模块
implementation 'org.springframework.boot:spring-boot-starter-web' // 引入 SpringBoot 的 web 的依赖
}
gradle.taskGraph.whenReady { // 在所有的操作准备好之后触发
tasks.each { task ->
if (task.name.contains('javadoc')) { // 如果发现有 test 任务,就跳过
task.enabled = false // 当前任务不执行
}
}
}
}
2.4.11 microboot-web 项目
- 将之前 firstboot 项目中的代码拷贝到当前的项目之中,进行测试。
- 启动类:
package com.github.fairy.era;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* 启动类
*
* @author 许大仙
* @version 1.0
* @since 2021-12-31 09:14
*/
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
- Handler 类:
package com.github.fairy.era.web;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author 许大仙
* @version 1.0
* @since 2021-12-31 09:22
*/
@RestController
public class DemoHandler {
@GetMapping(value = "/demo")
public String demo() {
return "你好啊,SpringBoot";
}
}