Appearance
二、Spring Boot开发环境搭建和项目启动
1、jdk 的配置
本课程是使用 IDEA 进行开发,在IDEA 中配置 jdk 的方式很简单,打开File->Project Structure
,如下图所:
- 选择 SDKs
- 在 JDK home path 中选择本地 jdk 的安装目录
- 在 Name 中为 jdk 自定义名字
通过以上三步骤,即可导入本地安装的 jdk。如果是使用 STS 或者 eclipse 的朋友,可以通过两步骤添加:
window->preference->java->Instralled JRES
来添加本地 jdk。window-->preference-->java-->Compiler
选择 jre,和 jdk 保持一致。
2、Spring Boot 工程的构建
1、IDEA 快速构建
IDEA 中可以通过File->New->Project
来快速构建 Spring Boot 工程。如下,选择 Spring Initializr,在 Project SDK 中选择刚刚我们导入的 jdk,点击 Next,到了项目的配置信息。
- Group:填企业域名,本次使用com.xue
- Artifact:项目名称
- pacgake name:包名
- Dependencies:可以添加我们项目中所需要的依赖信息,根据实际情况来添加,现在只需要选择 Web 即可。
2、官方构建
第二种方式可以通过官方构建,步骤如下:
- 访问 http://start.spring.io/。
- 在页面上输入相应的 Spring Boot 版本、Group 和 Artifact 信息以及项目依赖,然后创建项目。
- 解压后,使用 IDEA 导入该 maven 工程:
File->New->Model from Existing Source
,然后选择解压后的项目文件夹即可。如果是使用 eclipse 的朋友,可以通过Import->Existing Maven Projects->Next
,然后选择解压后的项目文件夹即可。
3、maven配置
创建了 Spring Boot 项目之后,需要进行 maven 配置。打开File->settings
,搜索 maven,配置一下本地的 maven 信息。如下:
在 Maven home directory 中选择本地 Maven 的安装路径;在 User settings file 中选择本地 Maven 的配置文件所在路径。在配置文件中,我们配置一下国内阿里的镜像,这样在下载 maven 依赖时,速度很快。
xml
<mirrors>
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
</mirrors>
<profiles>
<profile>
<id>jdk-1.8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
</profiles>
如果是使用 eclipse 的朋友,可以通过window-->preference-->Maven-->User Settings
来配置,配置方式和上面一致。
4、编码配置
同样地,新建项目后,我们一般都需要配置编码,这点非常重要,很多初学者都会忘记这一步,所以要养成良好的习惯。
IDEA 中,仍然是打开File->settings
,搜索 encoding,配置一下本地的编码信息。如下:
如果是使用 eclipse 的朋友,有两个地方需要设置一下编码:
- window--> perferences-->General-->Workspace,将Text file encoding改成utf-8
- window-->perferences-->General-->content types,选中Text,将Default encoding填入utf-8
OK,编码设置完成即可启动项目工程了。
3、Spring Boot 项目工程结构
Spring Boot 项目总共有三个模块,如下图所示:
- src/main/java路径:主要编写业务程序
- src/main/resources路径:存放静态文件和配置文件
- src/test/java路径:主要编写测试程序
默认情况下,如上图所示会创建一个启动类 Springboot01Application,该类上面有个@SpringBootApplication
注解,该启动类中有个 main 方法,没错,Spring Boot 启动只要运行该 main 方法即可,非常方便。另外,Spring Boot 内部集成了 tomcat,不需要我们人为手动去配置 tomcat,开发者只需要关注具体的业务逻辑即可。
到此为止,Spring Boot 就启动成功了,为了比较清楚的看到效果,我们写一个 Controller 来测试一下,如下:
java
package com.xue.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @Author: xueqimiao
* @Date: 2022/5/4 18:04
*/
@RestController
@RequestMapping("/hello")
public class HelloController {
@RequestMapping("/springboot")
public String helloSpringBoot() {
return "Hello Spring Boot!";
}
}
重新运行 main 方法启动项目,在浏览器中输入 http://localhost:8080/hello/springboot
,如果看到 “Hello Spring Boot!”
,那么恭喜你项目启动成功!Spring Boot 就是这么简单方便!端口号默认是8080,如果想要修改,可以在 application.yml(官方默认的是application.properties,可以把后缀改成yml
) 文件中使用 server.port
来人为指定端口,如8081端口:
yaml
server:
port: 8081
4、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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.7</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.xue</groupId>
<artifactId>springboot-01</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springboot-01</name>
<description>springboot-01</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
<parent>
这个标签都知道什么意思, 父亲
是吧,这么个标签主要的作用就是用于版本控制。这也就是 引入的 WEB
模块 starter
的时候不用指定版本号<version>
标签的原因,因为在spring-boot-starter-parent
中已经指定了,类似于一种继承的关系,父亲已经为你提供了,你只需要选择用不用就行。
为什么spring-boot-starter-parent
引入 就能使用Spring MVC
的功能呢?
这确实是个难以理解的问题,为了理解这个问题,我们不妨看一下spring-boot-starter-parent
这个启动器都依赖了什么?如下:
xml
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>2.6.7</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-json</artifactId>
<version>2.6.7</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<version>2.6.7</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>5.3.19</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.19</version>
<scope>compile</scope>
</dependency>
</dependencies>
5、单元测试
java
@SpringBootTest
class Springboot01ApplicationTests {
@Test
void contextLoads() {
}
}
@SpringBootTest
:这个注解指定这个类是单元测试的类。 在这个类中能够自动的获取IOC容器中的Bean,比如:
java
@SpringBootTest
class Springboot01ApplicationTests {
@Autowired
private HelloController helloController;
@Test
void contextLoads() {
}
}