vue+springboot前后端分离小结(后端篇)

本文总结了使用Spring Boot进行后端接口开发的经验,包括创建Spring Initializr项目、建立包结构、开发pojo、dao、service和controller层。重点讲解了Shiro的配置,如何管理用户登录和接口访问权限,为前后端分离的项目提供了参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

学习前后端分离有一阵子了,到了疲倦期,是时候整理整理这两个月学到的东西了。这是后端篇,这几天期末考试,看情况再整理前端篇。
前后端分离,顾名思义就是前端一套,后端一套,只用http请求,连接两端,前端负责显示渲染数据,后端负责操作数据。
后端开发:开发工具:idea,技术栈:springboot,jpa,shiro。

后端接口开发

一、创建Spring Initializr项目

在web里选spring web,在SQL里选Spring Data JPA

二、把各个包建好(pojo,dao,service……)

个人喜欢先把总体架构理清,然后慢慢往里面加部件。
项目结构图

三、开发pojo类(正式进入写代码环节)

首先想办法让idea连接到本地的mysql上去,这里的几个坑:

  1. idea的驱动问题:有些mysql版本可能和springboot的pom.xml上面写的mysql驱动版本不兼容导致测试连接失败,下图是成功了的,这时候就要去网上找数据库版本的对应依赖了,在pom.xml上改一下。
    数据库驱动失败
  2. 成功连接数据库,但是刷新失败,有报错信息,大概率和数据库时区有关系,需要更改mysql的时区,这里mysql8,改了时区要是重启电脑了又会失效,需要改mysql的配置文件,可能还找不到那个配置文件(是隐藏文件),这里给几个修改时区的教程链接:修改时区命令行方法, 修改配置文件方法,找不到配置文件时……

刷新失败
连上数据库了开始编写pojo实体类:在类名上一行写注解:@Entity(“表名”),主键上写注解:
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = “字段名”)
其他字段上写注解:@Column(name = “字段名”)
类中的属性名,与数据库表中的字段名一一对应,采用驼峰命名法(作为初学者的体验:一开始尽量别考虑命名规范,不要用下划线,不要用大写字母,全用小写字母,jpa那个东西玄学的很,命名一不小心就报错了,还是不知道怎么改的那种错)get,set方法,tostring方法不要忘了。如果有一对多关系(比如一个用户拥有很多角色,为了方便写代码,直接就在用户类中,加一个属性:角色id,这个属性在数据库表里是没有的,需要加@Transient注解)

四、开发dao类(jpa自动生成sql语句)

编写接口,extends JpaRepository<实体类类名,Integer>,接着就在里面写各种接口,大概有getBy字段,save,findAllBy字段,deleteAllBy字段这些方法,特别注意在delete方法上最好加上注解:
@Modifying
@Transactional
虽然不大明白这两个注解干嘛用的,到后面删除一个用户,然后涉及到要删其他很多表的时候,没有这个注解可能会报错(可以先不加,到时候报错了再加上去试试)。

五、开发service类(调用dao接口函数,封装一下对数据的各种操作)

在service类名上加上注解:@Service。用注解:@Autowired,注入dao类或者其他service类,这里可以实现多表查询,多表删除巴拉巴拉的各种操作,看具体需要啦,基础的增删改查的话也就调用一下dao提供的findAllby方法就可以了。

六、开发controller层(终于到http接口了)

在controller类名上加上注解:@Controller。用@Autowired注入service类,调用service的接口,在controller层基本就是调用接口,不进行复杂的数据处理了,在各个方法上加上注解:
@CrossOrigin
@PostMapping(path = “http请求的路径”)
@ResponseBody
到这里后端开发接口的大致步骤已经走完了,接下来是一些配置上的总结。

配置

WebMvcConfigurer

这个东西只可意会不可言传:这里面有个从前端传来的图片处理,配置了把图片下载到本地的路径。还有个解决跨域的配置。

package com.example.demo.config;

import com.example.demo.interceptor.LoginInterceptor;
import org.springframework.boot.SpringBootConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@SpringBootConfiguration
public class WebConfigurer implements WebMvcConfigurer {
   
   
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
   
   
        registry.addResourceHandler("/api/file/**").addResourceLocations("file:"+"D:/pic/");
    }
    @Override
    public void addCorsMappings(CorsRegistry registry) {
   
   
        registry.addMapping("/**")
                .allowCredentials(true)
                .allowedOrigins("http://127.0.0.1")
                .allowedMethods("POST", "GET"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值