什么是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)

相关推荐

  • 个人伤害的意思,个人伤害是什么意思-词组(字义,诗词)

    词组个人伤害的意思,个人伤害是什么意思-词组(字义,诗词)基本解释详细字义 个人伤害拼音:gè rén shāng hài注音:ㄍㄜˋㄍㄜˇ ㄖㄣˊ ㄕㄤ ㄏㄞˋ解释:1.影响某人的肉体和精神的自身伤害,与使个人

    阅读 2021年11月29日
  • 从颂的意思(字义,诗词)

    词组从颂的意思(字义,诗词)基本解释详细字义 从颂拼音:cóng sòng注音:ㄘㄨㄥˊㄗㄨㄥˋ ㄙㄨㄥˋ解释:从容不迫。颂,"容"的古字。基本字义
    从(從)cóng(ㄘㄨㄥˊ)
    1、依顺:顺从。盲从。从善如流。

    阅读 2021年11月20日
  • 悲伤的句子今天花开的不同,明天谁会一起绽放。

    伤感句子 今朝花开色不同,明日花开谁与共。1、一朝春去红颜老,花落人亡两不知
    2、此情可待成追忆,只是当时已惘然
    3、还君一钵无情泪,根不相逢未剃时。
    4、痴君三世等白头,不知汝世和谁怜
    5、今朝花开色不同,明日花开谁与

    阅读 2021年11月21日
  • 开办费摊销会计账务处理(企业会计制度规定开办费如何摊销)

    开办费摊销计入什么科目,开办费的最新账务处理开办费如何摊销?开办费指企业在批准筹建之日起,到开始生产、经营(包括试生产、试营业)之日止的期间(即筹建期间)发生的费用支出。包括筹建期人员工资、办公费、培训费、差旅费、印刷费

    教程 2021年12月25日
  • 15k是多少钱(1k1w1b1a是多少钱)

    15k是多少钱(1k1w1b1a是多少钱)不管是实习还是工作,最怕人问薪资实习还能和别人一起吐槽一下万恶的资本家工资要是低了,说出数字只会收获一脸不可思议“新闻不是说外面工作钱都超多吗?”新闻?是说这样的新闻吗?可是..

    营销 2021年10月10日
  • 淘宝如何看月销量,怎么看淘宝是不是刷出来的销量

    淘宝刷销量,淘宝销量怎么看是不是刷的,淘宝销量是不是刷的如何判断淘宝销量怎么看是不是刷的 很多的消费者们在淘宝购物的时候会选择销量比较多的店铺进行消费,因为他们觉得销量高意味着这个店铺的商品质量可能会好一点点,其实很多的

    电商 2021年11月21日