spring AOP中提供了三类Advice,即前增强,后增

电脑杂谈  发布时间:2019-07-24 19:09:11  来源:网络整理

spring aop advice事务_spring aop实现事务_spring aop advice事务

spring面向切面编程之aop增强

AOP增强处理日志输出

spring增强方式常用的两种,@Around示例

wpffeihuwpfwpffeihuwpf01-07 18:24

等级Bbs21楼

呵呵,看明字就了解个大概了,不过说不清楚,帮顶

spring Aop 关于arg-name的一些理解

humanityhumanity01-08 00:27

等级Bbs72楼

顾名思义:

前置是在有这种调用目标方法的企图时就会干预。

AextendsTargetClass{

publicvoidtargetMethod(){

beforeAdvice();

super.targetMethod();

}

}

后置是在调用正常返回时才干预。

AextendsTargetClass{

publicvoidtargetMethod(){

super.targetMethod();

afterAdvice();

}

}

spring aop advice事务_spring aop advice事务_spring aop实现事务

异常时调用后得到一个异常才干预。

AextendsTargetClass{

publicvoidtargetMethod(){

try{

super.targetMethod();

}catch(ExpectedExceptione){

afterExceptionAdvice();

}

}

}

AspectJ(另一种AOP)它还支持SpringAOP在JDK1.5之前不支持的特性-AroundAdvice,

当一个view需要处理事件时,如果它设置了ontouchlistener,那么ontouch方法会被调用,如果ontouch返回false,则当前view的ontouchevent方法会被调用,返回true则不会被调用,同时,在ontouchevent方法中如果设置了onclicklistener,那么他的onclick方法会被调用。大家注意图中红色标注的地址出现了8次:0x1102db280,这个是在调用class_getmethodimplementation()方法时,无法找到对应实现时返回的相同的一个地址,无论该方法是在实例方法或类方法,无论是否对一个实例调用该方法,返回的地址都是相同的,但是每次运行该程序时返回的地址并不相同,而对于另一种方法,如果找不到对应的实现,则返回0,在图中我做了蓝色标记。这是不行的,我们可以用反证法来说明这个问题,因为我们有时候调用一个方法时也可以不定义返回结果变量,即不要关心其返回结果,例如spring aop advice事务,我们调用map.remove(key)方法时,虽然remove方法有返回值,但是我们通常都不会定义接收返回结果的变量,这时候假设该类中有两个名称和参数列表完全相同的方法,仅仅是返回类型不同spring aop advice事务,java就无法确定编程者倒底是想调用哪个方法了,因为它无法通过返回结果类型来判断。

AextendsTargetClass{

publicvoidtargetMethod(){

if(expectedCondition==true){

super.targetMethod();//用AspectJ来写是proceed();

}else{

//donothing.

}

}

}

比如:下面这个是AspectJ的写法:

voidaround():updateBalance(){

Stringaccount=(String)thisJoinPoint.getArgs()[0];

spring aop advice事务_spring aop advice事务_spring aop实现事务

bigdecimal bigdecimal = new bigdecimal(result).setscale(0, bigdecimal.round_half_up)。 private bigdecimal projectremindmoney = new bigdecimal(0)。 private bigdecimal personalprogress=new bigdecimal(0)。

if(account==null||account.equals("0")

||balance==null||balance.signnum()==-1){

thrownewillegalargumentexception()。thrownewillegalargumentexception("ranges:mergecalledonnoncontiguousvalues:[this]:"+this+"and"+r)。thrownewillegalargumentexception("ranges:illegalvaluepassedtoremove:"+this+"removecalledfor:"+r)。

}else{

proceed();//调用原来的方法。

}

}

Spring没提供AroundAdvice因为它不方便像AspectJ那样还可以写一段代码来决定是否proceed。AspectJ的特点是它直接个性编译后的字码或在类加载过程中修改字节码,使得它可以实现更多的功能,比如它能够为“将要访问一个字段的值”提供advice(不是调用getter方法),还支持introduction(比如,为一个本来没有实现Serializable接口的类实现Serializable接口,或为一个类添加成员方法或变量),当然修改字节码这个事情也没办法给构造函数来个advice了。

spring切面:注解:最终增强

spring学习笔记(8)AOP增强(advice)配置与应用

qwe611207150642016-03-20

Spring-AOP 增强(Advice)5种类型和创建增强类

yangshangwei55352017-08-14

关于对Spring中AOP的Advice(通知、增强)的属性Around的理解

qq_347878304892017-09-23

Spring框架学习记录之异常抛出增强和最终增强

weixin_418734318942018-05-29

springAOP前置增强、后置增强、环绕增强(编程式)

kuangfengbuyi90322016-09-09

Spring AOP 抛出增强捕获异常

ab725395756232016-03-17

spring学习笔记(23)基于tx/aop配置切面增强事务

qwe611207151032016-03-26

spring aop实现事务_spring aop advice事务_spring aop advice事务

spring aop 之增强器处理

hepei1209562017-10-09

Spring学习(二十五)Spring AOP之增强介绍

icarus_wang80872016-06-22

事务配置-基于tx/aop配置切面增强事务

f9173863899492017-07-26

关于使用Spring AOP 环绕性增强出现异常影响业务流程的问题

oarsman19592017-02-04

spring切面:注解:抛出异常增强

Amen_Wu23002019-06-13

Spring-AOP @AspectJ进阶之增强织入的顺序

yangshangwei57012017-09-11

Spring-AOP 通过配置文件实现 后置增强

yangshangwei54562017-08-15

SpringAOP 前置、后置、环绕增强

wangyan19936622632015-11-12

Spring-AOP @AspectJ进阶之绑定抛出的异常

yangshangwei57422017-09-13

Spring AOP源码解读2 - 切面和增强的取得

hotdust7442016-12-11

Spring的aspectj的AOP操作(前置增强 后置增强 环绕)

zhupengqq21962017-06-02

Spring学习(5):SpringAOP的5种增强类型

qq_3216662776482017-06-05

spring aop advice事务_spring aop advice事务_spring aop实现事务

f. 切面(aspect):切面是由切点和增强(引介)组成的,它包括了对横切关注功能的定义,也包括了对连接点的定义。面向切面编程中还要理解切入点、切面、通知、织入等概念。同一个切面类里的两个相同类型的增强处理在同一个连接点被织入时,spring aop将以随机顺序来织入这两个增强处理,没有办法指定它们的织入顺序。

Wang_huanA2522019-01-17

Spring(12):使用注解(@AfterThrowing/@After/@Around)实现AOP异常增强与实例

qq_2916632710742017-12-31

Spring AOP三种方式定义增强

deel_feel9352018-01-20

Spring增强处理一览表

Golden_soft2412018-07-25

spring AOP——MethodBeforeAdvice接口实现方法执行前通知

Milan__Kundera15182018-09-01

spring切面:注解:前后置增强(带参数、函数详情)

Amen_Wu37162019-06-13

【DB】【Spring】从事务增强机制出发通过AOP为Controller添加事务

szwangdf2982018-10-09

Spring AOP增强类型

a8279351020832015-09-08

spring切面:注解:前后置增强(不带参数、函数详情)

Amen_Wu5262019-06-13

Spring中的AOP——在Advice方法中获取目标方法的参数

De_Moivre572015-01-22

【实例】使用Spring AOP进行业务增强(通过XML配置)

qq_373669581262018-04-03

Spring框架中的AspectJ实现前后置通知

Let_Me2132018-07-25

Spring AOP之坑:完全搞清楚advice的执行顺序

qq_3233107348772018-06-06


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-115474-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      • 张鸿
        张鸿

        #宋茜4walls##宋茜#

      • 李坦然
        李坦然

        叙利亚危急让普京占尽风头

      • 李志强
        李志强

        希望在以后能够继续专注我的作品

      热点图片
      拼命载入中...