环境部分

一.按照图片顺序创建项目

1.打开IDEL新建项目

在这里插入图片描述

2.选择项目

在这里插入图片描述

3.添加依赖

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

4.运行

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

5.连接数据库

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

6.至此,该部分完成

代码部分

一.创建项目框架

1. 项目结构

这个项目配置适用于一个使用 Spring Boot 的 Web 应用,可能包括后端 REST API 和前端页面渲染。使用 MySQL 作为数据库,Thymeleaf 作为模板引擎。

2. 配置文件解析

<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>
  • modelVersion:指定 POM 的版本。通常使用 4.0.0。
  • xmlns 和 xsi:schemaLocation:定义了 XML 的命名空间和 XML Schema 用于验证的模式。
<groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>1.0-SNAPSHOT</version>
  • groupId:项目的组织 ID,通常是域名倒写。
  • artifactId:项目的名称或标识符。
  • version:项目的版本。1.0-SNAPSHOT 是一个开发版本。

3. 父级 Spring Boot 配置

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.0</version>
    </parent>
  • 父 POM:这里使用了 Spring Boot 提供的父 POM spring-boot-starter-parent,它简化了很多配置,并自动包含常用的依赖和插件。

4. 项目依赖

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.28</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.8.9</version>
        </dependency>
</dependencies>
  • spring-boot-starter-web:提供 Spring Web 功能,包括嵌入式 Tomcat 容器、RESTful API 支持等。
  • spring-boot-starter-data-jpa:用于 Spring Data JPA,使你能够轻松地与关系数据库进行交互。
  • mysql-connector-java:MySQL 数据库的 JDBC 驱动。
  • spring-boot-starter-thymeleaf:提供 Thymeleaf 模板引擎支持,用于构建动态网页。
  • gson:用于 JSON 数据的解析和生成,通常用于与外部系统交互。

5.完整代码

<?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>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>1.0-SNAPSHOT</version>

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

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.28</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.8.9</version>
        </dependency>
    </dependencies>
</project> 

二.配置数据库连接

1. 配置数据库连接

spring.datasource.url=jdbc:mysql://localhost:3306/wdemo?useSSL=false&serverTimezone=UTC
  • jdbc:mysql://localhost:3306/wdemo
    • jdbc:mysql://:使用MySQL的JDBC驱动协议。
    • localhost:3306:数据库服务器地址和端口(3306是MySQL默认端口)。
    • wdemo:数据库名称。
  • useSSL=false
    • 禁用SSL连接,避免因为SSL配置不当导致连接失败。
  • serverTimezone=UTC
    • 设置服务器时区为UTC,避免时区问题。

2. 配置数据库账户

spring.datasource.username=root
spring.datasource.password=123456
  • spring.datasource.username:数据库的用户名(root)。

  • spring.datasource.password:数据库的密码(123456)。

  • 安全建议

    :

    • 不要在application.properties中暴露明文密码,建议使用Spring Boot的加密工具或环境变量存储密码。

3. 配置JDBC驱动

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
  • com.mysql.cj.jdbc.Driver:MySQL 8 及以上的官方JDBC驱动类。

4. 配置 JPA (Hibernate)

spring.jpa.hibernate.ddl-auto=update
  • hibernate.ddl-auto
    

    定义数据库表的管理方式:

    • create:每次启动都会删除并重新创建表(开发时可用,生产环境慎用)。
    • create-drop:应用关闭时删除表(适用于测试)。
    • update:自动更新表结构(推荐用于开发环境)。
    • validate:只校验表结构,不会自动修改数据库。
    • none:不进行DDL操作(推荐用于生产环境)。

5. 显示SQL语句

spring.jpa.show-sql=true
  • true:在控制台输出Hibernate执行的SQL语句,方便调试。
  • false(默认):不显示SQL。

6.完整代码

# MySQL 数据库配置
# 数据库连接URL
# 格式: jdbc:mysql://<host>:<port>/<database>?<parameters>
spring.datasource.url=jdbc:mysql://localhost:3306/wdemo?useSSL=false&serverTimezone=UTC
# useSSL=false: 禁用SSL连接
# serverTimezone=UTC: 设置服务器时区为UTC
# 数据库用户名
spring.datasource.username=root
# 数据库密码
spring.datasource.password=123456
# JDBC驱动类名
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# JPA 配置
# hibernate.ddl-auto 可选值: create, create-drop, update, validate, none
# update: 自动更新数据库结构
spring.jpa.hibernate.ddl-auto=update
# 是否显示SQL语句
# true: 显示执行的SQL语句
spring.jpa.show-sql=true

三.创建数据库表

1. 关键字解析

CREATE TABLE IF NOT EXISTS
  • CREATE TABLE:表示创建一个新的表。
  • IF NOT EXISTS:
    • 只有当数据库中不存在该表时,才执行创建操作。
    • 避免重复执行CREATE TABLE导致的错误。

id INT PRIMARY KEY AUTO_INCREMENT
  • id:列的名称,表示用户的唯一标识符(主键)。
  • INT:数据类型,整数类型(通常用于ID字段)。
  • PRIMARY KEY:
    • 指定该字段为主键(Primary Key)。
    • 主键值必须唯一,不能为NULL。
  • AUTO_INCREMENT:
    • 让数据库自动递增该字段的值。
    • 插入数据时,无需手动指定id,MySQL会自动赋值。

 name VARCHAR(50) NOT NULL
  • name:列的名称,表示用户的姓名。
  • VARCHAR(50):
    • 变长字符串,最大长度为50个字符。
    • 使用 VARCHAR 而不是 CHAR,避免浪费存储空间。
  • NOT NULL:
    • 该字段不能为空,插入数据时必须提供值。

 email VARCHAR(100) NOT NULL
  • email:列的名称,表示用户的邮箱。
  • VARCHAR(100):
    • 变长字符串,最大长度为100个字符。
    • 选择足够的长度存储常见的电子邮件地址。
  • NOT NULL:
    • 电子邮件不能为空,插入数据时必须提供值。

 age INT
  • age:列的名称,表示用户的年龄。
  • INT:整数类型。
  • 默认可以为空(未指定 NOT NULL),意味着可以插入NULL值。

2.完整代码

CREATE TABLE if not exists user(
  id INT PRIMARY KEY AUTO_INCREMENT,
  name VARCHAR(50) NOT NULL,
  email VARCHAR(100) NOT NULL,
  age INT
); 

四.创建实体类

1. @Entity:标记为JPA实体

@Entity
  • 作用:标记该类为 JPA 实体类,表明它对应数据库中的一张表。
  • 要求:
    • 必须有一个主键(@Id)。
    • 必须有一个无参构造函数(默认生成)。

2. @Table(name = "user"):指定数据库表名

@Table(name = "user")
  • 作用:显式指定数据库中的表名为 "user"。
  • 必要性:
    • 若不加 @Table,JPA 默认使用类名作为表名(区分大小写)。
    • user 是 SQL 关键字,建议使用反引号 (user) 以防止冲突。

3. @Id + @GeneratedValue:主键自增

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
  • @Id:表示 id 是 主键。
  • @GeneratedValue(strategy = GenerationType.IDENTITY):
    • IDENTITY:数据库自增(如 MySQL AUTO_INCREMENT)。
    • 其他策略:
      • AUTO(默认):JPA 选择合适的策略(通常是 SEQUENCE)。
      • SEQUENCE:使用数据库的 SEQUENCE 机制(如 PostgreSQL)。
      • TABLE:使用 JPA 维护的 ID 生成表(较少用)。

数据库表对应 SQL

id INT PRIMARY KEY AUTO_INCREMENT

4. 普通字段(name、email、age)

private String name;
private String email;
private Integer age;
  • 默认映射

    • JPA 自动将 String 类型映射为 VARCHAR。
    • Integer 映射为 INT。
  • 建议

    • email 字段应唯一:

      @Column(unique = true)
      private String email;
      
    • 字段长度:

      @Column(length = 50, nullable = false)
      private String name;
      

5. @Column:自定义数据库字段

JPA 自动映射,但可用 @Column 进行定制:

@Column(name = "user_name", length = 50, nullable = false)
private String name;
  • name = "user_name":映射到 user_name 字段(默认是 name)。
  • length = 50:最大长度 50。
  • nullable = false:不允许 NULL。

6. Getter 和 Setter 方法

public Long getId() {
    return id;
}

public void setId(Long id) {
    this.id = id;
}
  • 作用:
    • 供 Spring Boot 读取和设置字段值。
    • JPA 需要 getter/setter 方法以进行数据映射。

五.创建数据访问层

1.代码详解

package com.example.demo.repository;

用户仓库接口,用于与数据库交互

import com.example.demo.model.User;

导入用户模型类

import org.springframework.data.jpa.repository.JpaRepository;

导入JPA仓库接口

public interface UserRepository extends JpaRepository<User, Long> {

}

扩展JpaRepository接口,提供基本的CRUD操作

2.使用教程

// 获取所有用户    
@GetMapping    
public List<User> getUsers() {        
    return userService.getAllUsers();    
}  
// 创建用户    
@PostMapping    
public User createUser(@RequestBody User user) {        
    return userService.saveUser(user);    
}     
// 根据 email 获取用户    
@GetMapping("/{email}")    
public User getUserByEmail(@PathVariable String email) {        
    return userService.getUserByEmail(email);    
}    
// 删除用户    
@DeleteMapping("/{id}")    
public void deleteUser(@PathVariable Long id) {        
    userService.deleteUser(id);    
}

六.创建控制层

1. 代码结构

UserController.java 主要负责 处理 HTTP 请求,包括:

  • GET 请求 /:获取用户列表,显示在页面上。
  • POST 请求 /add:添加新用户并存入数据库。

2. 代码逐行解析

(1) 指定包名
package com.example.demo.controller;
  • package 关键字:声明 UserController.java 属于 com.example.demo.controller 包。
  • 包的作用:组织代码,避免类名冲突。

(2) 导入相关类
// 导入用户模型类
import com.example.demo.model.User;
// 导入用户仓库接口
import com.example.demo.repository.UserRepository;
// 导入自动装配注解
import org.springframework.beans.factory.annotation.Autowired;
// 导入控制器注解
import org.springframework.stereotype.Controller;
// 导入模型对象注解
import org.springframework.ui.Model;
// 导入模型属性注解
import org.springframework.web.bind.annotation.*;

各个 import 语句的作用:

  • import com.example.demo.model.User;
    • 导入 User 实体类,用于表示数据库 user 表。
  • import com.example.demo.repository.UserRepository;
    • 导入 UserRepository 数据访问层,用于数据库操作。
  • import org.springframework.beans.factory.annotation.Autowired;
    • 导入 @Autowired,用于 自动装配 UserRepository。
  • import org.springframework.stereotype.Controller;
    • 导入 @Controller,标记 UserController 为 Spring MVC 控制器。
  • import org.springframework.ui.Model;
    • 导入 Model,用于向前端传递数据。
  • import org.springframework.web.bind.annotation.*;
    • 导入 Spring Web 相关注解(@GetMapping、@PostMapping、@ModelAttribute 等)。

(3) 标记 UserController 为 Spring MVC 控制器
// 标记该类为Spring MVC控制器
@Controller
public class UserController {
  • @Controller

    作用:

    • 让 Spring 识别 UserController 作为 Web 控制器。
    • 允许该类 接收 HTTP 请求 并 返回 HTML 视图。

(4) 自动装配 UserRepository
// 自动装配用户仓库实例
@Autowired
private UserRepository userRepository;
  • @Autowired 作用:
    • 自动注入 UserRepository 实例,无需手动创建对象。
  • UserRepository 作用:
    • 继承 JpaRepository<User, Long>,提供 CRUD(增删改查)数据库操作。

(5) 处理 GET 请求 /
// 处理GET请求,路径为"/"
@GetMapping("/")
public String showUsers(Model model) {
  • @GetMapping("/"):
    • 处理 /(首页) 的 GET 请求。
    • 访问 http://localhost:8080/ 时,会调用 showUsers() 方法。

(6) 查询用户并传递给前端
// 将所有用户添加到模型中
model.addAttribute("users", userRepository.findAll());
// 将新的用户对象添加到模型中
model.addAttribute("user", new User());
  • userRepository.findAll():

    • 查询数据库中的所有用户列表。
  • model.addAttribute("users", userRepository.findAll());

    :

    • 把 users 列表存入 Model,传递给前端。
  • model.addAttribute("user", new User());

    :

    • 创建一个 空用户对象,用于 表单绑定(新增用户)。

(7) 返回视图
// 返回视图名称"index"
return "index";
  • 返回 "index":

    • 渲染 src/main/resources/templates/index.html 页面(默认 Thymeleaf 解析)。
  • 前端页面 (index.html):

    <table>
        <tr th:each="user : ${users}">
            <td th:text="${user.id}"></td>
            <td th:text="${user.name}"></td>
            <td th:text="${user.email}"></td>
        </tr>
    </table>
    

(8) 处理 POST 请求 /add
// 处理POST请求,路径为"/add"
@PostMapping("/add")
public String addUser(@ModelAttribute User user) {
  • @PostMapping("/add")

    :

    • 处理 /add 路径的 POST 请求(表单提交)。
  • @ModelAttribute User user

    :

    • Spring 自动将 表单提交的数据 绑定到 User 实体。

(9) 保存用户到数据库
// 保存用户到数据库
userRepository.save(user);
  • userRepository.save(user);

    :

    • 自动把用户数据插入 user 表(Spring Data JPA)。
    • 如果 id 为空 → 新增用户。
    • 如果 id 不为空 → 更新用户信息。

(10) 重定向到 /
// 重定向到根路径"/"
return "redirect:/";
  • 返回 "redirect:/":
    • 表单提交后刷新页面,避免重复提交问题。

3. UserController 执行流程

步骤说明代码
1访问 http://localhost:8080/@GetMapping("/")
2showUsers() 查询用户数据userRepository.findAll()
3index.html 显示用户列表model.addAttribute("users", users)
4用户填写表单并点击提交<form action="/add" method="post">
5@PostMapping("/add") 处理数据@ModelAttribute User user
6save(user) 保存到数据库userRepository.save(user)
7重定向回 / 显示新用户return "redirect:/"

4.完整代码

// 控制器类,用于处理用户相关的HTTP请求
package com.example.demo.controller;
// 导入用户模型类
import com.example.demo.model.User;
// 导入用户仓库接口
import com.example.demo.repository.UserRepository;
// 导入自动装配注解
import org.springframework.beans.factory.annotation.Autowired;
// 导入控制器注解
import org.springframework.stereotype.Controller;
// 导入模型对象注解
import org.springframework.ui.Model;
// 导入模型属性注解
import org.springframework.web.bind.annotation.*;
// 标记该类为Spring MVC控制器
@Controller
public class UserController {
  // 自动装配用户仓库实例
  @Autowired
  private UserRepository userRepository;
  // 处理GET请求,路径为"/"
  @GetMapping("/")
  public String showUsers(Model model) {
    // 将所有用户添加到模型中
    model.addAttribute("users", userRepository.findAll());
    // 将新的用户对象添加到模型中
    model.addAttribute("user", new User());
    // 返回视图名称"index"
    return "index";
  }
  // 处理POST请求,路径为"/add"
  @PostMapping("/add")
  public String addUser(@ModelAttribute User user) {
    // 保存用户到数据库
    userRepository.save(user);   
    // 重定向到根路径"/"
    return "redirect:/";
  }
}

七.创建视图界面

<!-- 遍历用户列表 -->
<tr th:each="user : ${users}">
    <!-- 显示用户ID -->
    <td th:text="${user.id}"></td>
    <!-- 显示用户姓名 -->
    <td th:text="${user.name}"></td>
    <!-- 显示用户邮箱 -->
    <td th:text="${user.email}"></td>
    <!-- 显示用户年龄 -->
    <td th:text="${user.age}"></td>
</tr>

1.详解代码

<tr th:each="user : ${users}">
  • th:each 是Thymeleaf的一个属性,用于遍历集合。
  • user 是循环变量,表示当前遍历的用户对象。
  • ${users} 是一个模型属性,表示用户列表。
<td th:text="${user.id}"></td>
  • th:text 是Thymeleaf的一个属性,用于设置元素的文本内容。
  • ${user.id} 表示当前用户对象的ID属性。
<td th:text="${user.name}"></td>
  • ${user.name} 表示当前用户对象的姓名属性。
<td th:text="${user.email}"></td>
  • ${user.email} 表示当前用户对象的邮箱属性。
<td th:text="${user.age}"></td>
  • ${user.age} 表示当前用户对象的年龄属性。

2.完整的 Thymeleaf 用户表格

<table border="1">
    <tr>
 		<th>ID</th>
 		<th>姓名</th>
 		<th>邮箱</th>
 		<th>年龄</th>
 	</tr>
 	<tr th:each="user : ${users}">
 		<td th:text="${user.id}"></td>
 		<td th:text="${user.name}"></td>
 		<td th:text="${user.email}"></td>
 		<td th:text="${user.age}"></td>
 	</tr>
</table>

如果 users 传递的数据如下:

List<User> users = new ArrayList<>();
 users.add(new User(1L, "张三", "zhangsan@example.com", 25));
 users.add(new User(2L, "李四", "lisi@example.com", 30));

则 Thymeleaf 解析后,前端页面渲染出的 HTML:

<table border="1">
	<tr>
 		<th>ID</th>
 		<th>姓名</th>
 		<th>邮箱</th>
 		<th>年龄</th>
 	</tr>
 	<tr>
 		<td>1</td>
 		<td>张三</td>
 		<td>zhangsan@example.com</td>
 		<td>25</td>
 	</tr>
	<tr>
 		<td>2</td>
 		<td>李四</td>
 		<td>lisi@example.com</td>
 		<td>30</td>
 	</tr>
 </table>

3.users 数据从哪里来?

在 Spring Boot 控制器中, users是从数据库中查询得到的,并通过 UserController.java部分代码,这个在上文讲到。

Spring MVC 处理流程:

  1. 用户访问/,触发 showUsers()方法。
  2. Model传递给前端,即userRepository.findAll()查询数据库,获取所有用户数据。
  3. model.addAttribute("users", userRepository.findAll())将用户数据传递给 Thymeleaf。
  4. Thymeleaf在 index.html中循环遍历 users,动态渲染表格。

八.创建启动器

这段代码是 Spring Boot 项目的入口类,它负责启动 Spring Boot 应用。
Spring Boot 应用的运行从 main 方法开始,@SpringBootApplication注解让 Spring Boot 自动完成
项目的初始化、配置和运行。

// 主类,用于启动Spring Boot应用程序
package com.example.demo;
 // 导入Spring Boot应用程序启动类注解
import org.springframework.boot.SpringApplication;
 // 导入Spring Boot自动配置注解
import org.springframework.boot.autoconfigure.SpringBootApplication;
 // 标记该类为Spring Boot应用程序的入口点
@SpringBootApplication
 public class DemoApplication {
 // 主方法,程序的入口点
	public static void main(String[] args) {
		// 运行Spring Boot应用程序
		SpringApplication.run(DemoApplication.class, args);
	}
}

1. 代码结构

@SpringBootApplication
public class DemoApplication {
    // 主方法,程序的入口点
    public static void main(String[] args) {
        // 运行Spring Boot应用程序
        SpringApplication.run(DemoApplication.class, args);
    }
}

2. 代码详解

(1) @SpringBootApplication 注解
@SpringBootApplication

@SpringBootApplication 是 Spring Boot 的核心注解,它相当于以下三个注解的组合:

  1. @Configuration:表示该类是 Spring 的配置类,可用于定义 Bean。
  2. @EnableAutoConfiguration:让 Spring Boot 自动配置应用程序所需的组件(例如数据库连接、Web 服务器等)。
  3. @ComponentScan:自动扫描 @Component、@Service、@Controller、@Repository 等 Spring 组件,并将它们注册到 Spring 容器中。

这些注解的作用包括:

  • 自动配置 Spring Boot 应用程序。
  • 扫描并加载 @Component、@Service、@Repository、@Controller 等 Spring 组件,并注册为 Bean。
  • 简化 Spring 配置,无需手写 XML 配置文件。
(2) main 方法
public static void main(String[] args) {
    // Java 程序的主方法,是应用程序的入口,执行后会启动 Spring Boot 应用。
    SpringApplication.run(DemoApplication.class, args);
}

main 方法是 Java 程序的主方法,是应用程序的入口。执行后会启动 Spring Boot 应用。当 JVM 运行 Java 程序时,首先执行 main 方法,然后启动 Spring Boot 运行环境。

(3) SpringApplication.run() 方法
SpringApplication.run(DemoApplication.class, args);

SpringApplication.run() 是 Spring Boot 的核心方法,用于启动 Spring Boot 应用。其参数包括:

  • DemoApplication.class:指定 Spring Boot 启动类,Spring Boot 以此类为起点启动。
  • args:传递命令行参数。

其执行流程包括:

  1. 启动 Spring Boot 应用(初始化 SpringApplication)。
  2. 创建 Spring 上下文(ApplicationContext,自动创建的)。
  3. 加载自动配置(@EnableAutoConfiguration)。
  4. 扫描并注册 @Component、@Service、@Repository、@Controller 等 Bean。
  5. 如果是 Web 应用,启动嵌入式 Web 服务器。
  6. 执行 CommandLineRunner 或 ApplicationRunner(如果有)。

3. Spring Boot 应用的启动流程

执行 SpringApplication.run(DemoApplication.class, args); 时,Spring Boot 自动完成以下任务:

  1. 初始化 Spring 环境,创建 ApplicationContext。
  2. 自动加载配置(比如数据库、日志、Spring MVC)。
  3. 扫描并注册 @Component、@Service、@Repository、@Controller 等 Bean。
  4. 如果是 Web 应用,启动嵌入式 Web 服务器。
  5. 执行 @Controller 并注册 Bean。
  6. 执行 CommandLineRunner 或 ApplicationRunner(如果有)。

4. 运行 Spring Boot 应用

Spring Boot 自动启动嵌入式 Web 服务器,应用将运行在 http://localhost:8080/(本地服务器,端口号默认 8080)。

最终项目文件结构

在这里插入图片描述

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐