软件架构与应用开发: 实验二

代码地址:Github

实验目的和要求

  1. 能编写Spring Boot 入门程序
  2. 能分析@SpringBootApplication作用及原理
  3. 利用两种Spring Boot配置文件格式来编写配置内容
  4. 能利用Spring Boot单元测试框架进行简单功能的测试
  5. 能分析说明Spring Boot提供的核心配置功能
  6. 能编写一个Spring Boot多环境配置实例

实验内容和原理

  1. 从零开始完成课程讲解的全过程实例的搭建

    1. 把主要步骤截图和文字说如下例1:
    2. 把主要步骤截图和文字说如下例2:
  2. Spring在配置文件中支持生成一些随机数来支持日常的测试或者数据生成,形式为${random.xx},比如配置文件中:

    year=${random.value} 
    number=${random.int}
    

    请在L02SpringBootConfig作业上修改并增加对上述功能

  3. 模仿L02SpringBootConfig示例做一个加载Yaml格式配置文件值的项目

主要仪器设备及工具或开发设计软件及工具名称

  • 笔记本或台式机
  • Eclipse+Spring开发套件 、IntelliJ IDEA、Visual Studio Code等一种开发工具

实验步骤

从零搭建过程实例

  • 这里选择使用Spring Initializr创建SpringBoot项目

image-20230312140551425

image-20230312140650702

这里仍然选择 2.7.0 版本

image-20230312140917425

这里是该项目文件的 pom.xml 文件

  • 简单写了一下 application.yml
spring:
  datasource:
    username: root
    password: root
    url: jdbc:mysql://localhost:33306/test?serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8
    driver-class-name: com.mysql.cj.jdbc.Driver

server:
  port: 9090
  • 简单配置了一个 RestController 类如下
@RestController
public class TestController {
    @GetMapping("/")
    public String test() {
        return "Hello World";
    }
}
  • 实验浏览器查看结果
image-20230312142039057

配置文件中的随机数

  • 导入项目 L02SpringBootConfig
image-20230312142452407
  • 解决 IDEA 报错 “未配置 Spring Boot 配置注解处理器”,在 pom.xml 添加如下依赖
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-configuration-processor</artifactId>
  <optional>true</optional>
</dependency>
  • 运行内容如下
image-20230312143220712
  • 修改配置文件添加如下内容
usersetting.year=${random.value}
usersetting.number=${random.int}
  • HelloZuccController 类中增加内容如下
@Value("${usersetting.year}")
String year;
@Value("${usersetting.number}")
int number;
@RequestMapping("/test")
public String test() {
  return "配置文件随机生成的内容 {year = " + year + "}, {number = " + number + "}";
}
  • 运行内容如下
image-20230312143836012

做一个加载Yaml格式配置文件值的项目

  • 新建项目如问题一
  • 准备数据库,其中 user 表内容如下
image-20230312145058816
  • 导入 MyBatis-Plus 依赖
<!-- MyBatisPlus依赖 -->
<dependency>
  <groupId>com.baomidou</groupId>
  <artifactId>mybatis-plus-boot-starter</artifactId>
  <version>3.5.2</version>
</dependency>
  • 填充一下 application.yml
spring:
  datasource:
    username: root
    password: root
    url: jdbc:mysql://localhost:33306/test?serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8
    driver-class-name: com.mysql.cj.jdbc.Driver

server:
  port: 9090

parameter:
  randomInt: ${random.int}
  randomString: ${random.value}

  school: 浙大城市学院
  class: 计算机 2004
  • 写一个 RestController 类如下
@RestController
public class TestController {
    @Resource
    UserServerImpl userServer;
    @Value("${parameter.randomInt}")
    int randomInt;
    @Value("${parameter.randomString}")
    String randomString;
    @Value("${parameter.school}")
    String school;
    @Value("${parameter.class}")
    String _class;

    @GetMapping("/")
    public String test() {
        return  "randomInt = " + randomInt + "\trandomString = " + randomString + "\tschool = " + school + "\tclass = " + _class;
    }

    @GetMapping("/database")
    public String databaseTest() {
        List<UserDAO> userList = userServer.getAllUser();
        return userList.toString();
    }
}
  • 查看结果
image-20230312150640605 image-20230312150651077