文档章节

AOP切面编程二

scooplol
 scooplol
发布于 2017/08/12 18:26
字数 397
阅读 4
收藏 0

一、前置通知递参数

1.修改前置通知接收参数选项

public void beforeInvoke(Object arg){
     Logger.getLogger(ServiceProxy.class).info("[ServiceProxy - Before] 参数值 "+arg); 
    }

2.修改applicationContext 调用表达式和前置通知参数接收

 <!-- 针对AOP的处理进行配置 -->
<aop:config>
     <!-- 定义业务操作切入点 -->
   <aop:pointcut expression="execution(* group.esperanto.service..*.*(..)) and args(id)" id="messagePoint"/>
        <!-- 定义具体操作到切入点的方法上 -->
   <aop:aspect ref="serviceProxy">
       <aop:before method="beforeInvoke" pointcut-ref="messagePoint" arg-names="id"/>
       <aop:after method="afterInvoke" pointcut="execution(* group.esperanto.service..*.*(..))"/>
   </aop:aspect>
</aop:config>

二、返回通知

1.添加返回通知处理方法

public void returnInvoke(Object val){
    	 Logger.getLogger(ServiceProxy.class).info("[ServiceProxy - Returning] 返回值 "+val); 
     }

2.修改applicationContext 添加返回通知

<!-- 针对AOP的处理进行配置 -->
<aop:config>
        <!-- 定义业务操作切入点 -->
  <aop:pointcut expression="execution(* group.esperanto.service..*.*(..)) and args(id)" id="messagePoint"/>
        <!-- 定义具体操作到切入点的方法上 -->
  <aop:aspect ref="serviceProxy">
    <aop:before method="beforeInvoke" pointcut-ref="messagePoint" arg-names="id"/>
    <aop:after method="afterInvoke" pointcut="execution(* group.esperanto.service..*.*(..))"/>
    <aop:after-returning method="returnInvoke" pointcut="execution(* group.esperanto.service..*.*(..))" returning="val" arg-names="val" />
  </aop:aspect>
</aop:config>

三、环绕通知

1.添加环绕通知执行方法

public Object arroundInvoke(ProceedingJoinPoint point) throws Throwable{
    	 Logger.getLogger(ServiceProxy.class).info("[ServiceProxy -arroundInvoke Before] 参数 值 "+ Arrays.toString(point.getArgs())); 
           // Object obj = point.proceed(point.getArgs());  // 正常继续传递参数
    	 Object obj = point.proceed(new Object[]{"hello"});   //现在不传递参数,自定义参数传递
    	 Logger.getLogger(ServiceProxy.class).info("[ServiceProxy -arroundInvoke After] 返回结果"+obj); 
    	 return true;
     }

2.修改applicationContext

 <!-- 针对AOP的处理进行配置 -->
<aop:config>
        <!-- 定义业务操作切入点 -->
  <aop:pointcut expression="execution(* group.esperanto.service..*.*(..))" id="messagePoint"/>
     <!-- 定义具体操作到切入点的方法上 -->
  <aop:aspect ref="serviceProxy">
     <aop:around method="arroundInvoke" pointcut-ref="messagePoint"/>
  </aop:aspect>
</aop:config>

 

© 著作权归作者所有

共有 人打赏支持
上一篇: AOP切面编程三
下一篇: AOP切面编程一
scooplol
粉丝 12
博文 103
码字总数 205785
作品 0
南充
程序员
私信 提问
spring aop , tx

一 .面向切面编程(AOP)的基础概念: 以一个普通的java方法来举例 a. 横切关注点:如上面5个通知的位置,在java对象中,可以这些具有类似共同处理逻辑的位置加入如权限验证、事物处理、日志记...

SKYCOBS
2016/08/18
13
0
SSM 五:Spring核心概念

第五章:Spring核心概念 一.Spring Ioc 优点:1.低侵入式设计2.独立于各种应用服务器3.依赖注入特性将组建关系透明化,降低耦合度4.面向切面编程的特性允许将通用性任务集中式处理5:使用第三...

廉价香水
2017/10/25
0
0
Spring AOP解释及在项目中使用举例

一.AOP是什么 AOP - Aspect Oriented Programing,面向切面编程。将封装好的对象切开,找出其中对多个对象产生影响的公共行为,并将其封装为一个可重用的模块,这个模块被命名为“切面”,切...

Jacktanger
06/08
0
0
Spring架构揭秘-AOP

1、AOP概述 2、Spring AOP原理 3、Spring AOP架构解析 一、AOP概述 Java程序员在写代码的时候通常都是使用新建对象类来描述业务特性,然后通过对象的继承、组合、扩展等手段来实现业务需求,...

sgkbkega
2016/09/08
25
0
实例讲解Java的Spring框架中的AOP实现

简介 面向切面编程(AOP)提供另外一种角度来思考程序结构,通过这种方式弥补了面向对象编程(OOP)的不足。 除了类(classes)以外,AOP提供了 切面。切面对关注点进行模块化,例如横切多个...

清城北苑
2016/10/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

docker部署springboot项目

安装docker 菜鸟教程 springboot项目 maven依赖 <?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001......

yimingkeji
今天
10
0
ios多个target

1.建立3个target,分别为heroone,heroone test,heroone dev;分别为正式环境,test环境,dev环境 2.注意取消掉autocreate以防止名字不对,分别以Duplicate的方式建立另外两个scheme 3.创建...

HeroHY
今天
5
0
php获取客户端IP

php获取客户端IP 首先先阅读关于IP真实性安全的文章:如何正確的取得使用者 IP? 「任何從客戶端取得的資料都是不可信任的!」 HTTP_CLIENT_IP头是有的,但未成标准,不一定服务器都实现。 ...

DrChenXX
昨天
0
0
. The valid characters are defined in RFC 7230 and RFC 问题

通过这里的回答,我们可以知道: Tomcat在 7.0.73, 8.0.39, 8.5.7 版本后,添加了对于http头的验证。 具体来说,就是添加了些规则去限制HTTP头的规范性 参考这里 具体来说: org.apache.tom...

west_coast
昨天
1
0
刷leetcode第704题-二分查找

今天双十一买的算法书到货了,路上刷到有人说的这个题,借(chao)鉴(xi)一下别人的思路,这个是C++标准库里面的经典方法,思路精巧,优雅好品味 int search(int* nums, int numsSize, in...

锟斤拷烫烫烫
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部