2.1 基础功能

2.1.1 相关说明

功能 说明
Maven 3.3+
JDK 1.8+
Spring Boot 2.1.14.RELEASE
Spring Framework 5.1.15.RELEASE

2.1.2 构建 Spring Boot 项目

2.1.2.1 pom文件说明

添加 web 环境依赖

<?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>org.example</groupId>
    <artifactId>springboot-learn</artifactId>
    <version>1.0-SNAPSHOT</version>
    <description>基于Spring Boot的案例</description>
    <packaging>jar</packaging>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.14.RELEASE</version>
    </parent>

    <dependencies>
        <!-- spring boot web 依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>
2.1.2.2 项目结构说明

2.1.2.3 创建Controller
// @RestController 为组合注解,等同于 Spring中的:@Controller + @ResponseBody
@RestController
public class LearnController {

    @RequestMapping("/hello")
    public String hello() {
        return "你好 Spring Boot";
    }

}
2.1.2.4 编写启动主程序类
@SpringBootApplication
public class LearnApplication {
    public static void main(String[] args) {
        SpringApplication.run(LearnApplication.class, args);
    }
}

问题:启动主程序类的位置是否可以随便放?

2.1.2.5 运行项目

运行项目主程序启动类LearnApplication类,启动成功后,可以看见默认端口为8080

页面输出为 “你好 Spring Boot”。

至此,构建Spring Boot项目就完成了。

2.1.3 单元测试

​ 开发中,每当完成一个功能接口或业务方法编写后,通常需要借助单元测试验证功能是否正确。

Spring Boot对单元测试提供了很好的支持,在使用是,直接在pom.xml文件中添加

spring-boot-starter-test测试依赖启动器,可以通过相关注解实现单元测试。

2.1.3.1 添加依赖
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
</dependency>
2.1.3.2 编写测试代码
// 测试启动类,并加载Spring Boot测试注解
@RunWith(SpringRunner.class)
// 标记为Spring Boot单元测试类,并加载项目的ApplicationContext上下文环境
// classes 知道项目主程序启动类
@SpringBootTest(classes = LearnApplication.class)
public class LearnApplicationTest {

    @Autowired
    private LearnController learnController;

    @Test
    public void test() {
        String hello = learnController.hello();
        System.out.println(hello);
    }

}

2.1.4 热部署

​ 在开发过程中,通常会对一段业务代码不断的操作修改,在修改之后往往要重启服务,有些服务需要加载很久才能启动成功,这种不必要的重复操作极大的降低了程序开发效率。为此,Spring Boot框架专门提供了进行热部署的依赖启动器,用于进行项目热部署,无需手动重启项目。

2.1.4.1 添加依赖
<!-- 热部署依赖启动器 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
</dependency>
2.1.4.2 IDEA工具设置

选择IDEA工具界面【File】-【Settings】,打卡Compiler界面,勾选【Build project automatically】

点击 Apply 应用,以及OK保存。

在项目任意界面使用组合快捷键【Ctrl+Alt+Shift+/】打开Maintenance选项框,选中并打开Registry页面

列表中找到【compiler.automake.allow.when.app.running】,将该值Value进行勾选。用于指定IDEA工具在程序运行过程中自动编译,最后单击【Close】按钮完成设置

2.1.4.3 效果测试

启动项目,访问 http://localhost:8080/hello

修改 “你好” 为 “hello”

为了测试热部署的是否有效,接下来,在不关闭项目的情况下,将LearnController类中数据修改,并保存,查看控制台会发现项目能够自动构建和编译,说明热部署生效