基于XML的AOP配置(2)-环绕通知
配置方式:
<aop:config>
<aop:pointcut expression="execution(* com.itheima.service.impl.*.*(..))"
id="pt1"/>
<aop:aspect id="txAdvice" ref="txManager">
<!-- 配置环绕通知 -->
<aop:around method="aroundPrint" pointcut-ref="pt1"/>
</aop:aspect>
</aop:config>
aop:around:
作用:
用于配置环绕通知
属性:
method:指定通知中方法的名称。
pointct:定义切入点表达式
pointcut-ref:指定切入点表达式的引用
说明:
它是 spring 框架为我们提供的一种可以在代码中手动控制增强代码什么时候执行的方式。
注意:
通常情况下,环绕通知都是独立使用的
/**
* 环绕通知
* 问题:
* 当我们配置了环绕通知后,切入点方法不执行,而通知方法执行了
* 分析:
* 通过对比动态代理中的环绕通知代码,发现动态代理的环绕通知有明确的切入点方法调用而我们的代码中没有
* 解决:
* Spring框架为我们提供ProceedingJoinPoint。该接口有一个方法proceed(),此方法就相当于明确调用切入点方法
* 该接口可以作为环绕通知的方法参数,在程序执行时,spring框架会为我们提供该接口的实现类供我们使用
* */
public Object aroundPrint(ProceedingJoinPoint pjp){
try {
Object args[] = pjp.getArgs();//得到方法执行所需要的参数
System.out.println("环绕通知logger开始记录日志了前置");
Object returnValue = pjp.proceed();//明确调用业务层(切入点方法)
System.out.println("环绕通知logger开始记录日志了后置");
return returnValue;
} catch (Throwable throwable) {
System.out.println("环绕通知logger开始记录日志了异常");
throw new RuntimeException(throwable);
}finally {
System.out.println("环绕通知logger开始记录日志了最终");
}
}

基于XML的AOP配置(2)-环绕通知的更多相关文章
- 基于XML的AOP配置
		
创建spring的配置文件并导入约束 此处要导入aop的约束 <?xml version="1.0" encoding="UTF-8"?> < ...
 - spring的基于xml的AOP配置案例和切入点表达式的一些写法
		
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.spr ...
 - 基于 XML 的 AOP 配置(1)
		
本文连接:https://www.cnblogs.com/qzhc/p/11969734.html 接下来我将用一个很简单的实例 1. 环境搭建 1.1. 第一步:准备必要的代码 业务层代码: Acc ...
 - 基于XML的AOP配置-转
		
http://www.cnblogs.com/yangy608/archive/2010/11/14/1876839.html AOP(Aspect-Oriented Programming,面向切面 ...
 - Spring中AOP的基于xml开发和配置
		
pom文件: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http ...
 - Spring中基于xml的AOP
		
1.Aop 全程是Aspect Oriented Programming 即面向切面编程,通过预编译方式和运行期动态代理实现程序功能的同一维护的一种技术.Aop是oop的延续,是软件开发中的 一个热点 ...
 - Spring 框架的概述以及Spring中基于XML的IOC配置
		
Spring 框架的概述以及Spring中基于XML的IOC配置 一.简介 Spring的两大核心:IOC(DI)与AOP,IOC是反转控制,DI依赖注入 特点:轻量级.依赖注入.面向切面编程.容器. ...
 - 01Spring基于xml的IOC配置--入门
		
01Spring基于xml的IOC配置 1.创建一个普通的maven工程 1.1 选择maven,不用骨架,点击下一步. 1.2 填写GroupId.ArtifactId.Version.填完点击下一 ...
 - 面向切面编程AOP:基于XML文件的配置
		
除了使用AspectJ注解声明切面,Spring也支持在bean的配置文件中声明切面,这种声明是通过aop scheme中的XML元素完成的. 首先建立一个类: package com.sevenhu ...
 
随机推荐
- 常用的Java工具类——十六种
			
常用的Java工具类——十六种 在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名,参考数据来源于Github上随机选 ...
 - maven 父子工程打包 并且上传linux服务器
			
先对父工程进行 mvn clean 再对子工程执行 install wagon:upload-single wagon:sshexec 使用wagon前提: 本地maven 的settings.xml ...
 - mysql sleep 死锁例子
			
表结构 CREATE TABLE `orders` ( `order_id` int(11) NOT NULL, `order_addr` varchar(255) DEFAULT NULL ) EN ...
 - odoo xml中添加数据的数字代表含义
			
参考原文:https://alanhou.org/odoo12-import-export-data/ <?xml version="1.0"?> <odoo n ...
 - centos 7 OpenResty®(lua-nginx-module)搭建可扩展的Web平台
			
OpenResty®-英文官网地址:http://openresty.org/en/ OpenResty®-中文官网地址: http://openresty.org/cn/ OpenResty®> ...
 - 【转】tar命令详解
			
原文:http://www.cnblogs.com/qq78292959/archive/2011/07/06/2099427.html tar -c: 建立压缩档案-x:解压-t:查看内容-r:向压 ...
 - python自学笔记之开源小工具:SanicDB介绍
			
SanicDB 是为 Python的异步 Web 框架 Sanic 方便操作MySQL而开发的工具,是对 aiomysql.Pool 的轻量级封装.Sanic 是异步IO的Web框架,同时用异步IO读 ...
 - 轻松阅读linux内核源码
			
神器:基于linux4.4版本,含函数和功能注释树 http://www.bricktou.com/ https://lwn.net/ 从0开始写linux,这个无敌牛逼,简单阅读了Introduct ...
 - python常用模块:re模块案例、subprocess
			
今日内容: 一.re模块二.re练习三.subproces模块 一.re模块 import re # [] 范围匹配 中间 用-来连接 # re.findall("[a-zA-Z0-9]&q ...
 - 排序算法之快速排序QuickSort
			
挖坑填数-快速排序 1. left = L,right = R;将基准数挖出形成第一个坑s[left]; 2. right --; 由后向前找比它小的数,找到后挖出此数填前一个坑s[left]中. 3 ...