使用注解来开发登录检查的切面功能

1、自定义

注解:我们自定义一个自己的注解,用于标识需要切入的方法
切面:配置一个切面,@Around(“@annotation(abc)”)标识所有标识了我们配置的注解的方法都做一个环绕切入,因为我们在业务处理中可能需要用到登录的用户信息,因此需要在切面中把从数据库中拿到的用户信息传入到Controller,而环绕切入可以修改Controller中方法的参数,因此使用@Around环绕切入
自定义异常:自己定义一个比如NoLoginException之类的异常用于处理该切面中可能发生的错误
全局异常处理:再用同样的步骤配置一个发送邮件的后置切面,将异常信息发送给开发者

2、具体实现
@Around("@annotation(clk)")
public Object checkLoginBefore(ProceedingJoinPoint joinPoint, CheckLogAnnotation clk) throws Throwable {
//将Userinfo传入到连接点中
Object[] args = joinPoint.getArgs();
args[0] = userInfo;

//调用目标方法的同时传递参数
Object result = joinPoint.proceed(args);
return result;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot 是一个基于 Spring 框架的快速开发微服务的框架。其中使用切面(AOP)技术可实现很多功能,如访问日志、权限控制等。然而,在实际使用过程中,我们有时会发现 Spring Boot 的切面会出现失效的情况。 造成切面失效的原因很多,可能是切面配置不正确,也可能是 Spring Boot 框架的问题。以下提供一些造成切面失效的可能原因及解决方法。 1. 同时使用 Spring Boot 和 Spring MVC 框架时,可能出现切面失效的情况。这时可以尝试在切面上加上@Order注解,以保证它在其他切面之前执行。 2. 当使用@Aspect 注解时,必须将切面类交由 Spring Boot 来管理。如在构造方法中注入其他类时,需要使用 @Autowired 才能自动注入。 3. 切面使用时,可能会出现 classpath 扫描不到包或者包路径配置错误,这时需要检查一下 AOP 包的路径是否正确。 4. 有时我们会在小范围使用 AOP,如仅仅对某些类或者方法进行切面。这种情况下,需要注意切面类的作用域,若是 prototype,可能会导致切面失效。 5. 值得注意的是,有时候在方法级别上添加的切面会被类级别上的切面覆盖。这时需要注意切面的优先级,可在类级别上的切面上标记@Order 设置优先级。 综上所述,当使用 Spring Boot 切面时,可能会出现失效问题。我们需要根据实际情况,仔细分析切面的失效原因,然后采取相应的措施解决。同时,定期检查 Spring Boot 切面的配置,避免出现问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值