基于springboot 快速搭建简单前后端分离项目-后台框架

目录

1、新建project

2、选择依赖

3、简单配置

4、数据库准备

5、完成后台逻辑代码

5.1创建java实体对象

5.2创建repository

5.3单元测试

5.4编写controller

5.5解决跨域


特别声明:本文百分之九十的内容是来自于B站上一位up主录制的前后端分离开发的视频,作者自己跟着手敲了一遍之后在这里记录了一下来。所以这篇文章的类型勉强算是翻译吧

原B站链接:【2020版】4小时学会Spring Boot+Vue前后端分离开发_哔哩哔哩_bilibili

本次实践我们选择springboot+spring DataJpa +mysql来完成一个简单的前后端分离开发项目的后台框架实现。将我们准备的数据库中book表中的图书信息从数据库查询出来,供前端页面展示。话不多说,直接开干

1、新建project

打开idea,依次点击file-new-project-spring initializr-next

输入如下信息:

2、选择依赖

next选择依赖,本次我们采用spring Data JPA 来进行实战,并勾选LmoBok表达式,MySQL驱动和springWeb启动器。

点击finish,创建完成之后,项目结构大概为这样的,

3、简单配置

我们采用yaml格式的配置文件,所以将application.properties改为yml后缀

并添加如下信息:

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/back?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
    username: root
    password: root
    driver-class-name: com.mysql.cj.jdbc.Driver
  jpa:
    show-sql: true
    properties:
      hibernate:
        format_sql: true
server:
  port: 8082

datasource:是数据库连接信息,注意要换成自己本地的实际数据库连接信息。

              jpa:show-sql是打印SQL日志的开关,format_sql是SQL日志格式化开关

        server:设置了项目启动的端口号

4、数据库准备

将如下脚本在自己的本地库中运行一遍,创建book表并插入数据。

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for book
-- ----------------------------
DROP TABLE IF EXISTS `book`;
CREATE TABLE `book` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `name` varchar(20) DEFAULT NULL,
  `author` varchar(20) DEFAULT NULL,
  `publish` varchar(20) DEFAULT NULL,
  `pages` int(10) DEFAULT NULL,
  `price` float(10,2) DEFAULT NULL,
  `bookcaseid` int(10) DEFAULT NULL,
  `abled` int(10) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `FK_ieh6qsxp6q7oydadktc9oc8t2` (`bookcaseid`)
) ENGINE=InnoDB AUTO_INCREMENT=119 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of book
-- ----------------------------
INSERT INTO `book` VALUES ('1', '解忧杂货店', '东野圭吾', '电子工业出版社', '102', '27.30', '9', '1');
INSERT INTO `book` VALUES ('2', '追风筝的人', '卡勒德·胡赛尼', '中信出版社', '330', '26.00', '1', '1');
INSERT INTO `book` VALUES ('3', '人间失格', '太宰治', '作家出版社', '150', '17.30', '1', '1');
INSERT INTO `book` VALUES ('4', '这就是二十四节气', '高春香', '电子工业出版社', '220', '59.00', '3', '1');
INSERT INTO `book` VALUES ('5', '白夜行', '东野圭吾', '南海出版公司', '300', '27.30', '4', '1');
INSERT INTO `book` VALUES ('6', '摆渡人', '克莱儿·麦克福尔', '百花洲文艺出版社', '225', '22.80', '1', '1');
INSERT INTO `book` VALUES ('7', '暖暖心绘本', '米拦弗特毕', '湖南少儿出版社', '168', '131.60', '5', '1');
INSERT INTO `book` VALUES ('8', '天才在左疯子在右', '高铭', '北京联合出版公司', '330', '27.50', '6', '1');
INSERT INTO `book` VALUES ('9', '我们仨', '杨绛', '生活.读书.新知三联书店', '89', '17.20', '7', '1');
INSERT INTO `book` VALUES ('10', '活着', '余华', '作家出版社', '100', '100.00', '6', '1');
INSERT INTO `book` VALUES ('11', '水浒传', '施耐庵', '三联出版社', '300', '50.00', '1', '1');
INSERT INTO `book` VALUES ('12', '三国演义', '罗贯中', '三联出版社', '300', '50.00', '2', '1');
INSERT INTO `book` VALUES ('13', '红楼梦', '曹雪芹', '三联出版社', '300', '50.00', '5', '1');
INSERT INTO `book` VALUES ('14', '西游记', '吴承恩', '三联出版社', '300', '60.00', '3', '1');

5、完成后台逻辑代码

5.1创建java实体对象

package com.liusx.entity;

import lombok.Data;
import javax.persistence.Entity;
import javax.persistence.Id;

@Entity //java实体类和数据库表的对应
@Data  //lombok的注解,自动帮我们生成get/set方法的。
public class Book {

    @Id //是指定当前实体的主键是哪一个属性,因为实体和数据库表绑定到一起了,所以说必须指定
    private Integer id;
    private String name;
    private String author;
    private String publish;
    private Integer pages;
    private float price;
}

因为我们使用了springData Jpa。所以只需要将实体类和数据库对象绑定起来就可以。通过@Entity注解。

5.2创建repository

package com.liusx.repository;

import com.liusx.entity.Book;
import org.springframework.data.jpa.repository.JpaRepository;


public interface BookRepository extends JpaRepository<Book,Integer> {
}

这个repository接口,直接继承JPARepository即可,不用定义任何方法,在JpaRepository的泛型中,需要传递两个参数,一个是实体类对象的类型,一个是实体类对象的主键。这样就可以,因为JpaRepository中已经定义好了我们需要用到的常用的所有方法。如下图所示:

到这一步我们的持久层代码就写完了,用SpringdataJpa的好处就是不用写mapper文件。

5.3单元测试

在我们日常的开发过程中,每写好一个持久层的方法,或者service层的方法,都应该写一个单元测试类测试一下这个方法返回的数据是否符合我们的预期,测试通过之后再在controller中调用它。

前后端分离项目,后端在写好一个接口的时候,也应该测试一下,不过不是写单元测试类测试了,而是用postman发送请求调用一下接口,测试接口的可用性

使用idea创建测试类比较简单,可以直接在BookRepository这个方法上右键创建测试类进行测试。在我们想要测试的接口或者类上右键,如图所示:

然后再弹出来的框中点击create new test。弹出的界面中什么都不用动,直接点击确定就会在test包中为我们生成一个测试类代码。

然后我们接着补全测试类的代码

package com.liusx.repository;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class BookRepositoryTest {

    @Autowired
    BookRepository bookRepository;

    @Test
    void finaAllTest(){
        System.out.println(bookRepository.findAll());
    }
}

运行测试类方法,观察控制台,我们可以看到格式化打印的SQL语句和查询出来的结果。

5.4编写controller

package com.liusx.controller;

import com.liusx.repository.BookRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/book")
public class BookController {

    @Autowired
    private BookRepository bookRepository;

    @GetMapping("list")
    public Object listBook(){
        return bookRepository.findAll();
    }

}

启动后台项目,使用postman测试

5.5解决跨域

方法一:全局配置。创建一个配置类实现WebMvcConfigurer接口。重写addCorsMappings()方法。

package com.liusx.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * description: CrossOriginConfig <br>
 * author: Administrator <br>
 * version: 1.0 <br>
 */
@Configuration
public class CrossOriginConfig implements WebMvcConfigurer {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOrigins("*")
                .allowedMethods("GET","HEAD","POST","PUT","DELETE","OPTIONS")
                .allowCredentials(true)
                .allowedHeaders("*")
                .maxAge(36000);

    }
}

addMapping:配置可以被跨域的路径,可以任意配置,可以具体到直接请求路径。
allowedOrigins:允许所有的请求域名访问我们的跨域资源,可以固定单条或者多条内容,如:"http://www.baidu.com",只有百度可以访问我们的跨域资源。

allowedMethods:允许输入参数的请求方法访问该跨域资源服务器,如:POST、GET、PUT、OPTIONS、DELETE等。
allowCredentials: 响应头表示是否可以将对请求的响应暴露给页面。返回true则可以,其他值均不可以
allowedHeaders:允许所有的请求header访问,可以自定义设置任意请求头信息,如:"X-YAUTH-TOKEN"
maxAge:配置客户端缓存预检请求的响应的时间(以秒为单位)。默认设置为1800秒(30分钟)

方法二:注解形式

Spring Boot 提供了一个@CrossOrigin 来解决跨域问题,这个注解可以实现方法级别的细粒度的跨域控制。

如果在类上添加该注解,该类下的所有接口都可以通过跨域访问

如果在方法上添加注解,那么仅仅只限于加注解的方法可以访问。

至此我们简单的一个前后端分离项目的后台框架就算搭建成功了。

  • 10
    点赞
  • 72
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
### 回答1: 外卖项目前后端分离是指将项目的前端部分和后端部分进行分离开发,前端使用Vue框架,后端使用Spring Boot框架。 前端使用Vue框架可以提供良好的用户界面和交互体验。Vue具有组件化的特点,使得前端开发更加模块化和可维护。同时,Vue的数据绑定和响应式设计可以帮助实现快速更新页面的功能。通过Vue,用户可以方便地浏览外卖项目的菜单、下单、支付等操作,提升用户的使用体验。 后端使用Spring Boot框架可以提供强大的后台支持。Spring Boot是一种轻量级的Java框架,可以快速搭建和部署项目,减少开发的复杂度。使用Spring Boot,开发人员可以方便地实现外卖项目后台逻辑,例如订单的处理、菜单的管理、支付的接口等。同时,Spring Boot集成了许多常用且可靠的开源库,为项目提供了高效、稳定的基础设施。 前后端分离的优势在于前端和后端可以并行开发,提高开发效率。前端和后端之间通过定义接口进行通信,降低了耦合度,灵活性更强。同时,单独部署前端和后端也可以提高项目的可维护性和可扩展性。例如,当需要添加新的功能或修改现有功能时,只需要修改相应的前端或后端代码,而不会影响到整个项目。 总之,外卖项目前后端分离以及使用Vue和Spring Boot框架的设计选择,可以帮助实现一个高效、稳定、可扩展的外卖平台。 ### 回答2: 外卖项目采用前后端分离的架构,前端使用Vue框架,后端采用Spring Boot框架。 前端使用Vue框架可以实现用户界面的可视化设计和交互体验。Vue框架具有简单易用、灵活可扩展、高效性能等特点,适用于构建复杂的单页面应用(SPA)。通过Vue框架,可以实现用户注册、登录、浏览菜单、购物车管理、订单处理等功能的前端设计和开发。前端通过调用后端接口,获取后端处理的数据,并将数据展示在用户界面上。 后端使用Spring Boot框架可以实现业务逻辑的处理和数据存储。Spring Boot框架提供了快速构建、简化配置和集成多种功能的特性,适用于快速开发和维护可靠的应用程序。通过Spring Boot框架,可以处理用户注册、登录验证、菜单管理、订单处理等业务逻辑,并与数据库进行交互,存储与外卖项目相关的数据。后端还需要提供RESTful接口,供前端调用和交互。 前后端分离架构的好处是可以实现前端与后端的解耦,提高开发效率和维护性。前端和后端可以同时进行开发,并可采用不同的技术栈,使得团队成员能够专注于自己的领域。前后端分离还可以实现多端复用,例如可以用同一组后端接口提供给Web端和移动端调用。 总的来说,外卖项目采用前后端分离的架构,借助Vue和Spring Boot框架实现了用户界面的展示和交互以及业务逻辑的处理和数据存储,从而使得项目开发更加高效和可维护。 ### 回答3: 外卖项目采用前后端分离的架构,前端使用Vue.js框架进行开发,后端使用Spring Boot框架进行开发。 前端使用Vue.js框架的原因是因为Vue.js具有简洁、高效、灵活的特点,能够轻松构建交互式的用户界面。Vue.js还拥有一套完整的生态系统,能够方便地进行组件化开发,并提供了强大的工具来处理数据和状态的变化。 后端使用Spring Boot框架的原因是因为Spring Boot是一个简化了Spring开发的微框架,能够快速构建可独立运行的、生产级的应用。Spring Boot提供了大量的开箱即用的特性,如自动配置、快速开发等,能够极大地提高开发效率。 在外卖项目中,前端负责用户界面的展示和交互逻辑的实现。前端通过Vue.js进行组件化开发,将页面拆分为多个可复用的组件,提高开发效率和代码维护性。前端还通过Vue.js提供的路由功能,实现不同页面之间的跳转和导航。同时,前端还与后端通过HTTP协议进行通信,获取后端提供的数据和服务,并将其展示给用户。 后端负责处理前端发送的请求,并根据业务逻辑进行相应的处理,最终返回数据给前端。后端还负责与数据库交互,对数据进行增删改查操作。后端使用Spring Boot提供的RESTful风格的API,能够轻松构建出符合规范的接口。同时,后端还可以利用Spring Security进行权限管理,确保只有具备相应权限的用户才能访问特定的接口。 综上所述,外卖项目采用前后端分离的架构,前端使用Vue.js框架进行开发,后端使用Spring Boot框架进行开发,能够提高开发效率和代码的可维护性,同时还能够满足用户对于界面交互和数据操作的需求。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值