使用 YAML 文件进行配置

JavaJavaBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在这个项目中,你将学习如何使用 YAML 文件配置 Spring Boot 应用程序,实现一个类来处理配置数据,并创建一个控制器以在网页上显示配置信息。

👀 预览

Spring Boot 网页结果

🎯 任务

在这个项目中,你将学习:

  • 如何使用 YAML 文件配置应用程序属性
  • 如何实现一个 Student 类来处理配置数据
  • 如何创建一个 StudentController 以在网页上显示配置的数据
  • 如何修改启动类以扫描项目包中的所有类

🏆 成果

完成这个项目后,你将能够:

  • 使用 YAML 文件进行应用程序配置
  • 使用 @ConfigurationProperties 注解将配置数据自动绑定到一个类
  • 使用 @Value 注解将配置值注入到控制器
  • 使用 @SpringBootApplication 注解配置组件扫描
  • 开发一个显示配置数据的简单 Web 应用程序

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("`Java`")) -.-> java/DataStructuresGroup(["`Data Structures`"]) java(("`Java`")) -.-> java/ObjectOrientedandAdvancedConceptsGroup(["`Object-Oriented and Advanced Concepts`"]) java(("`Java`")) -.-> java/FileandIOManagementGroup(["`File and I/O Management`"]) java(("`Java`")) -.-> java/ConcurrentandNetworkProgrammingGroup(["`Concurrent and Network Programming`"]) java/DataStructuresGroup -.-> java/arrays("`Arrays`") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/classes_objects("`Classes/Objects`") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/packages_api("`Packages / API`") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/oop("`OOP`") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/annotation("`Annotation`") java/FileandIOManagementGroup -.-> java/files("`Files`") java/FileandIOManagementGroup -.-> java/io("`IO`") java/ConcurrentandNetworkProgrammingGroup -.-> java/working("`Working`") subgraph Lab Skills java/arrays -.-> lab-300350{{"`使用 YAML 文件进行配置`"}} java/classes_objects -.-> lab-300350{{"`使用 YAML 文件进行配置`"}} java/packages_api -.-> lab-300350{{"`使用 YAML 文件进行配置`"}} java/oop -.-> lab-300350{{"`使用 YAML 文件进行配置`"}} java/annotation -.-> lab-300350{{"`使用 YAML 文件进行配置`"}} java/files -.-> lab-300350{{"`使用 YAML 文件进行配置`"}} java/io -.-> lab-300350{{"`使用 YAML 文件进行配置`"}} java/working -.-> lab-300350{{"`使用 YAML 文件进行配置`"}} end

配置 YAML 文件

在这一步中,你将学习如何使用 YAML 文件配置应用程序属性。请按照以下步骤完成此步骤:

  1. 导航到项目中的 src/main/resources 目录。
  2. 创建一个名为 application.yml 的新文件。
  3. application.yml 文件中,添加以下配置:
## 自定义属性
school: 斯坦福大学

student:
  id: 2024000103
  name: 泰勒·乔伊
  age: 18
  courseId: 100018, 321001, 458911

此 YAML 配置定义了 school 属性和 student 属性,包括学生 ID、姓名、年龄和课程 ID。

✨ 查看解决方案并练习

实现 Student 类

在这一步中,你将实现 Student 类来处理配置数据。

  1. 导航到 org.labex.entity 包并创建一个名为 Student.java 的新文件。
  2. Student.java 文件中,添加以下代码:
package org.labex.entity;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

import java.util.Arrays;

@Component
@ConfigurationProperties(prefix = "student")
public class Student {
    private String id;
    private String name;
    private int age;
    private int[] courseId;

    @Override
    public String toString() {
        return "Student {id=" + id +
                ", name=" + name +
                ", age=" + age +
                ", course id=" + Arrays.toString(courseId) + "}";
    }

    // 获取器和设置器
    //...
}

在这个类中,我们使用 @Component@ConfigurationProperties 注解将 application.yml 文件中的属性自动绑定到 Student 类的相应字段。

✨ 查看解决方案并练习

实现 StudentController

在这一步中,你将实现 StudentController 来显示配置的数据。

  1. 导航到 org.labex.controller 包并创建一个名为 StudentController.java 的新文件。
  2. StudentController.java 文件中,添加以下代码:
package org.labex.controller;

import org.labex.entity.Student;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class StudentController {
    @Value("${school}")
    private String school;

    @Autowired
    private Student student;

    @GetMapping("/student")
    public String getStudent() {
        return "school=" + school + student.toString();
    }
}

在这个控制器中,我们使用 @Value 注解来注入 school 属性,并使用 @Autowired 注解来注入 Student 对象。当通过 /student 端点访问时,getStudent() 方法将在浏览器上显示配置的数据。

✨ 查看解决方案并练习

修改启动类

在这一步中,你将修改启动类以扫描 org.labex 包中的所有类。

  1. 导航到 org.labex.springbootyaml 包并打开 DemoApplication.java 文件。
  2. 按如下方式更新 DemoApplication 类:
package org.labex.springbootyaml;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication(scanBasePackages="org.labex")
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

通过在 @SpringBootApplication 注解中添加 scanBasePackages="org.labex",我们确保 org.labex 包中的所有类都被 Spring 上下文扫描和管理。

✨ 查看解决方案并练习

打包并运行应用程序

在这最后一步中,你将把应用程序打包成一个 JAR 文件并运行 Spring Boot 服务。

  1. 打开一个终端,并使用以下命令导航到项目的根目录:
cd ~/project/springbootyaml/
  1. 运行以下命令来打包并启动 Spring Boot 服务:
mvn clean package
mvn spring-boot:run
  1. 一旦服务运行起来,打开一个网页浏览器并导航到 http://localhost:8080/student。你应该会在页面上看到配置的学校和学生信息。

输出应该如下所示:

Spring Boot 服务输出

恭喜!你已经通过使用 YAML 文件配置应用程序、实现必要的类以及运行 Spring Boot 服务成功完成了该项目。

✨ 查看解决方案并练习

总结

恭喜!你已经完成了这个项目。你可以在 LabEx 中练习更多实验来提升你的技能。

您可能感兴趣的其他 Java 教程