在上一篇文章【Spring Boot:让Java开发变得更简单、更快捷】中,我们详细介绍了Spring Boot的历史、发展历程及其显著优势。Spring Boot通过简化开发流程和加快开发速度,使得Java开发变得更加简单高效。今天,我们将逐步介绍如何使用 Spring Initializr 快速生成并配置 Spring Boot 项目的完整流程,带领大家深入探索这一革命性的框架。
任务要求
使用IDEA开发工具和Spring官方提供了非常方便的工具Spring Initializr来帮助我们创建Spring Boot应用。
- 基于IDEA开发工具,搭建一个Maven项目,坐标groupId(com.cbitedu)、artifactId(study-springboot),其他默认
- 引入工程依赖:Springboot最新版本和MySQL驱动包和log4j日志依赖包、单元测试框架Junit
- 认识Springboot工程各目录结构及用途
- 创建package命名为com.cbitedu.springboot.web并创建HelloController类
- 完成HelloController的单元测试
任务收获
- 如何快速构建Springboot的Maven工程
- 如何引入第三方常用依赖:例如日志、MySQL数据库驱动、Thymeleaf、Web等
- 学会生成单元测试相关框架代码
- 熟悉Springboot工程目录结构
任务准备
环境要求
- JDK1.8+
- MySQL8.0.27+
- Maven 3.6.1+
- IDEA/VSCode
工程目录要求
任务实施
模块源代码地址:study-springboot-chapter00
任务实施步骤如下:
第1步:访问Spring Initializr:https://start.spring.io/
更改成阿里仓库:start.aliyun.com
或备注说明:如果网络访问正常也可以直接通过IDEA新建项目来完成框架性代码
如上图所示,几个选项说明:
- 1. 构建方式选择:此处我们选择 Maven Project 即可,表示生成的项目使用 Maven 构建。当然我们也可以发现,Spring Boot 项目亦可采用 Gradle 构建,目前 Spring Boot 主流的构建方式还是 Maven;
2. 编程语言选择:此处选择 Java 即可;
3. Spring Boot 版本选择: 2.x 版本与 1.x 版本还是有一些区别的,咱们学习肯定是选择 2.x 新版本。此处虽然选择了 2.6.7 版本;
4. 所属机构设置:Group 表示项目所属的机构,就是开发项目的公司或组织。因为公司可能会重名,所以习惯上采用倒置的域名作为 Group 的值。例如com.cbitedu
5. 项目标识设置:Artifact 是项目标识,用来区分项目。此处我们命名为springboot,注意项目标识习惯性地采用小写英文单词,单词间加横杠的形式。比如 Spring Boot 官方提供的很多依赖,都是spring-boot-starter-xxx的形式;
6. 项目名称设置:Name 是项目名称,保持与 Artifact 一致即可;
7. 默认包名设置:Package name 是默认包名,保持默认即可;
8. 打包方式选择:此处选择将项目打包为 Jar 文件;
9. 添加项目依赖:此处可以选择或者我们直接在 pom.xml 中添加。注意 pom.xml 就是 Maven 的配置文件,可以指定我们项目需要引入的依赖;
10. 生成项目:点击 Generate 按钮,即可按我们设置的信息生成 Spring Boot 项目了。
- Dependencies:选择要加入的Spring Boot组件;本文将实现一个Http接口,所以可以选择Web组件,只需要输入Web,页面会自动联想显示匹配的可选组件
- 第2步:点击”Generate Project“按钮生成项目;此时浏览器会下载一个与上面
Artifact名称一样的压缩包。 - 第3步:解压项目包,并用编译器以Maven项目导入,以IntelliJ IDEA为例:
- 菜单中选择:File –> New –> Project from Existing Sources…
- 选择解压后的项目文件夹,点击OK
- 点击:Import project from external model,并选择Maven,点击Next到底为止。
编写一个HTTP接口
-
创建package命名为com.cbitedu.web(根据实际情况修改)
-
创建HelloController类,内容如下:
@RestController public class HelloController { @RequestMapping("/hello") public String index() { return "Hello World"; } } -
启动主程序
- 使用PostMan等工具发起请求:http://localhost:8080/hello,可以看到页面返回:Hello World
编写单元测试用例
修改pom.xml文件引入Junit4依赖
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
打开的src/test/下的测试入口StudySpringbootApplicationTests类。下面编写一个简单的单元测试来模拟http请求,具体如下:
package com.cbitedu.springboot;
import com.cbitedu.springboot.web.HelloController;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.MediaType;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import static org.hamcrest.Matchers.equalTo;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
@RunWith(SpringRunner.class)
@SpringBootTest
public class StudySpringbootApplicationTests {
private MockMvc mvc;
@Before
public void setUp() throws Exception {
mvc = MockMvcBuilders.standaloneSetup(new HelloController()).build();
}
@Test
public void getHello() throws Exception {
mvc.perform(MockMvcRequestBuilders.get("/hello").accept(MediaType.APPLICATION_JSON))
.andExpect(status().isOk())
.andExpect(content().string(equalTo("Hello World")));
}
}
-
使用MockServletContext来构建一个空的WebApplicationContext,这样我们创建的HelloController就可以在@Before函数中创建并传递到MockMvcBuilders.standaloneSetup()函数中。
至此已完成目标,通过Maven构建了一个空白Spring Boot项目,再通过引入web模块实现了一个简单的请求处理。 使用VScode创建Springboot项目 (学生独立完成)
方法二: 使用Intellij Idea创建Spring boot项目
方法三: 使用VScode创建Springboot项目 (学生独立完成)
示例代码仓库: gitee.com/ossbar/stud…
小结
Spring Boot 的项目结构约定,Spring Boot 默认采用 Maven 的目录结构,其中
- src.main.java 存放源代码文件
- src.main.resource 存放资源文件
- src.test.java 测试代码
- src.test.resource 测试资源文件
- target 编译后的 class 文件和 jar 文件
通过本文的学习,我们已经掌握了如何使用 Spring Initializr 快速生成一个基本的 Spring Boot 项目,并且初步了解了项目的基本结构和简单的 HTTP 接口实现。接下来,我们将进一步探讨 Spring Boot 中配置文件的使用,这是理解和掌握 Spring Boot 应用的关键之一。