我是靠谱客的博主 难过大侠,最近开发中收集的这篇文章主要介绍java 关于Spring中Aop的简单理解以及SpringBoot如何添加Aop实现步骤,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

今天我们来讲解一下如何给springboot添加Aop,这个功能在开发中也是会被经常用到的。刨去事务不说,我们也会有很多地方需要自定义aop,例如用户登录信息和权限的获取以及jwt(json web token)签名验证等过程都需要我们使用到自定义aop,那就让我们来聊聊这个aop具体是做什么的以及具体怎么使用吧。

AOP简介

AOP(Aspect Oriented Programming)即面向切面编程, 它提供了另一种角度来思考程序结构,弥补了传统的OOP即面向对象编程的不足,AOP采取了横向抽取机制,取代了传统纵向继承体系重复性代码。

使用场景

在实际开发中,我们会有很多与我们业务逻辑无关但是又不得不写的代码,例如如果我们需要使用jwt签名验证我们需要在很多接口前都要进行签名的校验,根据签名的正确与否来决定是否拥有调用此接口的权利。如果我们在每一个接口前都进行这一系列的复杂校验,不仅会增加程序员的代码量,影响他们写业务逻辑的思路,也会造成代码的冗余,使同一功能代码书写多次。

AOP术语

想要使用AOP,则要对AOP的术语有一些了解。网上的AOP术语解释对于初学者而言个人感觉过于专业难懂。本人使用比较简单的语言对其进行了解释。
1.目标类(target):需要被增强的类。
2.连接点(JoinPoint):目标类上哪些有可能被增强的方法。(所有方法)
3.切入点(PointCut):目标类被增强的方法,被增强的连接点。
4.增强/通知(Advice):增强内容
5.织入(weaving):将通知(增强)应用到连接点上,生成代理的过程。
6.代理(proxy)
7.切面(aspect):切入点和 通知 结合

AOP通知类型

前置通知(Before advice): 在目标方法执行前实施增强
后置通知(After advice):在目标方法执行后实施增强
环绕通知(Around advice):在目标方法执行前后实施增强
异常抛出通知(After throwing advice):在方法抛出异常后实施增强
返回后通知(After returning advice):正常完成后执行的通知

AOP与SpringBoot结合

首先我们使用的架构还是基于之前写过的配置双数据源的架构,如果不了解的可以查看java 基于springboot使用ssh(spring + springmvc + hibernate)分库配置多数据源方式 这篇文章。

创建AOP类

这里写图片描述

代码如下,对应代码解释以注释的形式添加到了代码中。
ControllerAOP

package com.beyondli.webtools;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.context.annotation.Configuration;
/**
* Created by beyondLi on 2017/7/31.
*/
//证明是一个配置文件(使用@Component也可以,因为点入后会发现@Configuration还是使用了@Component)
@Configuration
//证明是一个切面
@Aspect
public class ControllerAOP {
//环绕aop
//execution表达式 此表达式表示扫描controller下所有类的所有方法都执行此aop
@Around("execution (* com.beyondli.controller..*.*(..))")
public Object testAop(ProceedingJoinPoint pro) throws Throwable {
//获取request请求提(需要时备用)
//HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
//进入方法前执行的代码
System.out.println("beginAround");
//执行调用的方法
Object proceed = pro.proceed();
//方法执行完成后执行的方法
System.out.println("endAround");
return proceed;
}
}

测试结果

这里写图片描述
这里写图片描述
这里写图片描述

好了,其实使用springboot添加aop还是非常容易的,具体的使用就要根据业务的具体需求做具体的改动了。

以上观点均属本人个人理解,如有错误或不足,望指出,共同成长。

最后

以上就是难过大侠为你收集整理的java 关于Spring中Aop的简单理解以及SpringBoot如何添加Aop实现步骤的全部内容,希望文章能够帮你解决java 关于Spring中Aop的简单理解以及SpringBoot如何添加Aop实现步骤所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部