头图

Spring Boot 与 Vue.js 入门实战示例

Spring Boot作为流行的Java后端框架,而Vue.js则是前端开发中最受欢迎的JavaScript框架之一。两者结合使用,可以快速开发高效、现代化的Web应用。以下是一个简单的入门实战示例,详细介绍如何搭建一个Spring Boot后端和Vue.js前端的全栈应用。

1. 创建Spring Boot项目

使用Spring Initializr创建项目

  1. 打开Spring Initializr
  2. 选择项目构建工具(Maven或Gradle),并选择所需的Java版本(推荐使用Java 11或更高版本)。
  3. 选择所需的依赖项,例如:

    • Spring Web:用于构建Web应用,支持RESTful API。
    • Spring Data JPA:用于数据库交互,简化数据访问。
    • H2 Database:一个轻量级的内存数据库(可以根据需要选择其他数据库)。

生成项目后,下载并解压,导入到IDE中(如IntelliJ IDEA或Eclipse)。

编写后端业务逻辑

  • Controller:处理HTTP请求并返回数据。
package com.example.demo.controller;

import com.example.demo.model.User;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class UserController {

    @GetMapping("/api/user")
    public User getUser() {
        // 创建一个示例用户
        User user = new User("John", "Doe", 25);
        return user;
    }
}
  • 实体类:定义数据模型,通常与数据库表对应。
package com.example.demo.model;

public class User {
    private String firstName;
    private String lastName;
    private int age;

    // 构造函数、getter和setter
    public User(String firstName, String lastName, int age) {
        this.firstName = firstName;
        this.lastName = lastName;
        this.age = age;
    }

    // getters and setters...
}

2. 创建Vue.js项目

使用Vue CLI创建项目

  1. 安装Vue CLI(如果还没有安装):

    npm install -g @vue/cli
  2. 创建一个新的Vue项目:

    vue create vue-front-end
  3. 选择默认配置(或根据需求进行自定义配置),进入项目目录:

    cd vue-front-end

编写前端代码

  • App.vue:这是Vue应用的根组件,我们将通过Axios请求Spring Boot后端的数据。
<template>
  <div id="app">
    <h1>User Info</h1>
    <div v-if="user">
      <p>First Name: {{ user.firstName }}</p>
      <p>Last Name: {{ user.lastName }}</p>
      <p>Age: {{ user.age }}</p>
    </div>
  </div>
</template>

<script>
import axios from 'axios';

export default {
  data() {
    return {
      user: null,
    };
  },
  created() {
    axios.get('http://localhost:8080/api/user')
      .then(response => {
        this.user = response.data;
      })
      .catch(error => {
        console.error("There was an error fetching the user:", error);
      });
  },
};
</script>

解释

  • axios.get('http://localhost:8080/api/user'):使用Axios向后端发送GET请求,获取用户信息。
  • this.user = response.data:将从后端获取的数据存储到Vue的user数据属性中。

3. 连接前后端

在Vue.js中使用Axios发送HTTP请求

  • 在Vue项目中,使用Axios向Spring Boot后端发送请求以获取数据。Axios是一个基于Promise的HTTP客户端,可以在浏览器和Node.js中使用。
  • 在Vue组件的created生命周期钩子中,我们发起了对Spring Boot后端的请求,获取用户数据并将其绑定到组件的user属性中。

跨域问题
由于Spring Boot后端和Vue前端通常在不同的端口运行(例如:前端运行在http://localhost:8081,后端运行在http://localhost:8080),可能会遇到跨域(CORS)问题。为解决此问题,可以在Spring Boot应用中配置CORS。

Spring Boot中启用CORS

import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.GetMapping;

@RestController
public class UserController {

    @CrossOrigin(origins = "http://localhost:8081")  // 允许来自前端的请求
    @GetMapping("/api/user")
    public User getUser() {
        return new User("John", "Doe", 25);
    }
}

4. 测试和调试

  1. 启动Spring Boot后端应用:

    mvn spring-boot:run
  2. 启动Vue.js前端应用:

    npm run serve

访问http://localhost:8081,你应该可以看到从后端获取的用户信息。

调试

  • 使用浏览器的开发者工具(Network选项卡)检查请求和响应,确保前端能够正确接收数据。
  • 如果遇到CORS错误,确认后端是否正确配置了跨域设置。

5. 部署应用

打包Vue.js应用

npm run build

该命令会在/dist目录下生成生产环境的静态文件。

将Vue应用集成到Spring Boot中
/dist目录中的所有文件复制到Spring Boot项目的src/main/resources/static目录下。Spring Boot会自动提供该目录中的静态资源。

打包Spring Boot应用

mvn clean package

该命令会生成一个jar文件,包含Spring Boot后端和Vue.js前端的静态资源。

部署
将生成的jar文件部署到服务器或云平台(如阿里云、腾讯云、AWS等)。启动该应用后,前后端会通过一个统一的服务进行访问。

6. 总结

通过这个简单的示例,我们展示了如何使用Spring Boot作为后端框架,Vue.js作为前端框架,快速搭建一个前后端分离的Web应用。涉及到的关键技术包括:

  • Spring Boot:快速构建RESTful API。
  • Vue.js:构建响应式的前端界面。
  • Axios:前端与后端的数据交互。

工作流程图

以下是前后端交互的工作流程图:

+----------------------+        +--------------------------+
|    Vue.js Frontend   |        |     Spring Boot Backend   |
|  (HTTP Request)      |        |  (HTTP Response)          |
+----------------------+        +--------------------------+
           |                               |
           | 1. GET /api/user              |
           |----------------------------->|
           |                               |
           | 2. Returns JSON user data    |
           |<-----------------------------|
           |                               |
           | 3. Displays data to user     |
           +-------------------------------+

这样,你就可以实现一个完整的前后端分离应用,且容易扩展和维护。


蓝易云
33 声望3 粉丝