当前位置:硬件测评 > SpringBoot统一功能处理

SpringBoot统一功能处理

  • 发布:2023-10-08 13:12

前言

接下来是springBoot统一功能处理模块,这也是AOP的实践部分。要实现三个课程目标:

  • 统一用户登录权限验证
  • 统一数据格式回归
  • 统一异常处理

让我们一一看看。

1。用户登录权限验证

用户登录权限的发展已经从以前的各个方法中对用户登录权限进行自我验证,到现在的统一的用户登录验证处理。这是一个逐步完善和优化的过程。

1.1 初始用户登录验证

我们先回顾一下初始用户登录验证的实现方法:

@RestController 
@RequestMapping("/用户")
公共 UserController {
/**
@RequestMapping("/m1") 公共对象方法(HttpServletRequest request) { //如果有session就获取它,如果没有就不会创建
HttpSession session = request.getSession();
&& session.getAttribute("用户信息") != null) {
//表明您已登录,业务正在正在处理
返回 true
    } 否则                                                                                   
                                   **
* 某种方法 2
*/
"/m2")
公共 对象 方法2(HttpServletRequest请求) {
获取,如果没有创建则不会创建
(session != null && session.getAttribute("userinfo") != null) {
//说明已登录,业务处理中
       返回
} else {
      返回; }
//其他方法...
}

从上面的代码可以看出,每种方法都有相同的用户登录验证权限,其缺点是:

  • 用户登录验证方法必须在每个方法中单独编写。即使封装成公共方法,调用时也必须传递参数,并在方法中进行判断。
  • 添加的控制器越多,调用用户登录验证的方法就越多,增加了后期的修改成本和维护成本。
  • 这些用户登录验证方法与接下来要实现的业务无关,但每个方法都必须写一次。

所以迫切需要提供一个公共的AOP方法来统一用户登录权限验证。

1.2 SpringAOP用户统一登录验证问题

说起统一用户登录验证,我们第一个想到的实现方案就是Spring AOP前置通知或者环绕通知。具体实现代码如下:

导入 org.aspectj.lang.ProceedingJoinPoint; 
导入 org.aspectj.lang.annotation.*;
导入 org.springframework.stereo type.Component;
@Aspect
@Component
公共 UserA spect {
//定义切点 方法控制器包及其后代包下所有类的所有方法
@Pointcut("execution(* com.example.demo.controller..*.*(.. ) )")
公共void切入点(){ }
//前置方式
@Before("切入点()")
公共 void doBefore(){

}

//包围法 @Around( “切入点()”)
public对象doAround(ProceedingJoinPoint joinPoint){
对象obj = null;
System.out.println( "Around 方法开始执行");拦截方法
                                                                                                                                              } catch(可投掷可投掷){
                                                   System.out.println(" around方法结束执行") ;
返回 obj;该方面有两个函数实现用户登录权限验证。问题:

  • 没有办法获取HttpSession对象。
  • 我们需要拦截一些方法,但不需要拦截其他方法。例如注册方法和登录方法不被拦截。在这种情况下,排除方法的规则很难定义,甚至不可能。方法定义。

如何解决这个问题?

1.3弹簧拦截器

针对上述问题,Spring提供了具体的实现拦截器:HandlerInterceptor。拦截器的实现分为以下两步:

  • 创建自定义拦截器,并实现HandlerInterceptor接口的preHandle(执行特定方法之前的预处理)方法。
  • 将自定义拦截器添加到WebMvcConfigureraddInterceptors方法中。

具体实现如下。

补充过滤器:

相关文章