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

相关推荐

  • 脾气不要大过本事下一句是什么 脾气不要大过本事下一句是哪句

    脾气不要大过本事下一句是什么 脾气不要大过本事下一句是哪句2021-12-04 18:18:351、脾气大不要大于本事的下一句:本事才有用。意思是只有本事大才有用,脾气可以大,但是有时候会起反作用,盛气凌人,火冒三丈,往

    生活 2021年12月4日
  • mssql邮件无法初始化(winxp命令启动sql)

    技术当MSSQL无法调用Xp_CmdShell时该怎么办这期内容当中小编将会给大家带来有关当MSSQL无法调用Xp_CmdShell时该怎么办,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收

    攻略 2021年12月14日
  • 红酒会醉吗

    红酒会醉吗 红酒后劲大,喝多了就醉了。红酒的成分比较简单,是自然发酵的果酒。虽然红酒的酒精度不是很高,但是喝了或者和其他酒混在一起很容易醉。有哪些种类的红酒?葡萄酒主要分为干酒、半干酒、甜酒和半甜酒。干酒和半干酒的度数在

    电商 2021年10月11日
  • 2021年电商活动(2020年电商购物节)

    近日,“双十一”、“李佳琪”、“薇娅”等相关名词频频出现在微博热搜中。一年一度的“双十一”又一次拉开帷幕,各种规则和玩法让人眼花缭乱,无法抗拒。毕竟“薅羊毛”是人之常情,全世界的消...

    跨境 2022年1月9日
  • 竹间的意思 竹间是什么意思

    竹间的意思 竹间是什么意思2021-10-19 11:41:481、竹间,作者:文天祥年代:南宋。倦来聊歇马,随分此青山。流水竹千个,清风沙一湾。乾坤醒醉里,身世有无间。客路真希绝,浮生半日闲。 2、【作者小传】:文天祥

    生活 2021年10月19日
  • wlk惩戒骑dps(魔兽世界防骑p2毕业装备)

    WLK版本前夕开放之后,惩戒骑再次找回了万年TBC的感觉。无论是战场中,还是副本中都可以看到大量的惩

    2022年9月5日