什么是aop,app系统

什么是aop,app系统 概述在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,

概述

在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度低,提高程序的可重用性,同时提高了开发的效率。

aop的相关概念

Aspect(切面):

Aspect 声明类似于 Java 中的类声明,在 Aspect 中会包含着一些 Pointcut 以及相应的 Advice。在Spring AOP中,切面可以使用基于模式或者基于@Aspect注解的方式来实现。

Joint point(连接点)

表示在程序中明确定义的点,典型的包括方法调用,对类成员的访问以及异常处理程序块的执行等等,它自身还可以嵌套其它 joint point。在Spring AOP中,一个连接点总是表示一个方法的执行。

Pointcut(切点)

表示一组 joint point,这些 joint point 或是通过逻辑关系组合起来,或是通过通配、正则表达式等方式集中起来,它定义了相应的 Advice 将要发生的地方。匹配连接点的断言。Advice通知和一个Joint point切入点表达式关联,并在满足这个切入点的连接点上运行。切入点表达式如何和连接点匹配是AOP的核心:Spring缺省使用AspectJ切入点语法。

Advice(通知)

Advice 定义了在 Pointcut 里面定义的程序点具体要做的操作,许多AOP框架(包括Spring)都是以拦截器做通知模型,并维护一个以连接点为中心的拦截器链。它通过 before、after 和 around 来区别是在每个 joint point 之前、之后还是代替执行的代码。Advice 的类型有如下几种。

before advice

在 join point 前被执行的 advice. 虽然 before advice 是在 join point 前被执行, 但是它并不能够阻止 join point 的执行, 除非发生了异常(即我们在 before advice 代码中, 不能人为地决定是否继续执行 join point 中的代码)

after return advice

在一个 join point 正常返回后执行的 advice

after throwing advice

当一个 join point 抛出异常后执行的 advice

after(final) advice

无论一个 join point 是正常退出还是发生了异常, 都会被执行的 advice.

around advice

在 join point 前和 joint point 退出后都执行的 advice. 这个是最常用的 advice.

introduction

introduction可以为原有的对象增加新的属性和方法。Spring允许引入新的接口(以及一个对应的实现)到任何被代理的对象。例如,你可以使用引入来使一个bean实现IsModified接口,以便简化缓存机制。

Target(目标对象)

织入 Advice 的目标对象。既然Spring AOP是通过运行时代理实现的,这个对象永远是一个被代理(proxied)对象。

Weaving(织入)

将 Aspect 和其他对象连接起来, 并创建 Adviced object 的过程。把切面连接到其它的应用程序类型或者对象上,并创建一个被通知的对象。这些可以在编译时(例如使用AspectJ编译器),类加载时和运行时完成。Spring和其他纯Java AOP框架一样,在运行时完成织入。

切面类示例

packagecom.ambulance.biz.base;

importcom.alibaba.fastjson.JSON;
importlombok.extern.java.Log;
importorg.aspectj.lang.JoinPoint;
importorg.aspectj.lang.ProceedingJoinPoint;
importorg.aspectj.lang.annotation.*;
importorg.springframework.stereotype.Component;
importorg.springframework.web.context.request.RequestContextHolder;
importorg.springframework.web.context.request.ServletRequestAttributes;

importjavax.servlet.http.HttpServletRequest;
importjava.util.Arrays;
importjava.util.List;

@Aspect//标识切面类
@Component//加入IOC容器
@Log//log
publicclassAspectConfig{

//execution([可见性]返回类型[声明类型].方法名(参数)[异常]) 其中[]内的是可选的,其它的还支持通配符的使用:
//*:匹配所有字符
//..:一般用于匹配多个包,多个参数
// :表示类及其子类
//运算符有:

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/35250.html

(0)

相关推荐

  • 分类算法的性能指标(分类算法常见的性能指标有)

    技术Classification算法指标是什么本篇内容介绍了“Classification算法指标是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希

    攻略 2021年12月21日
  • 使用氧气钢瓶和减压阀时应注意的事项

    使用氧气钢瓶和减压阀时应注意的事项 氧气瓶及其专用工具严禁与油脂接触,操作人员不能穿沾有油脂、油污的工作服、手套。直立放置要固定,并且远离火源,严禁阳光暴晒。氧气减压阀要专用,安装要上紧螺扣。开启气瓶时应站在侧面,

    生活 2021年10月14日
  • 建网站有哪些步骤,建立网站有哪些步骤

    互联网移动技术时代,网站建设已经司空见惯。许多企业会建立自己的网站,有专门的研发;d部门或者找专业的网站建设公司来做。而刚接触网站建设的企业,虽然已经有了建站的想法,但具体实施起来…

    2022年2月17日
  • 广州花都现在可以去吗,广州市花都区疫情严重吗

    广州花都现在可以去吗,广州市花都区疫情严重吗虽然全国疫情的爆发已经告一段落了,但是少数地区又迎来了疫情的二次爆发,比如说广州,这让很多想去旅游的朋友望而却步了,但是由于国家的有效防控,现在疫情情况已经好了很多。那么广州花

    生活 2021年10月15日
  • 华夏文化的源头,华夏文化指的是什么

    华夏文化有没有可能成为世界主流文化?网友提问:华夏文化有没有可能成为世界主流文化?优质回答:一个民族文化能不能成为世界主流,主要有二个条件,一个就是这个民族的文化是否丰富多彩,具有智慧力.引导力及传播力。第二点就是民族脊

    攻略 2021年12月1日