Spring框架----切入点表达式的写法
上一节我们实现了Spring的基于XML的AOP。
Spring的基于 XML的AOP的实现
我们将测试一下上一节的代码执行结果
/*测试aop的配置*/
public class AOPTest {public static void main(String[] args) {//1.获取容器ApplicationContext ac=new ClassPathXmlApplicationContext("bean.xml");//2.获取对象IAccountService as=(IAccountService)ac.getBean("accountService");//3.执行方法as.saveAccount();as.updateAccount(1);
as.deleteAccount();}
}
只有保存输出了,其他都没有输出,原因就是切入点表达式配置死了,就是保存,但是通常情况下我们是会对业务层所有方法进行增强,但不是每个方法都写一遍。
切入点表达式的写法
关键字:execution(表达式)
表达式:访问修饰符 返回值 包名.包名....类名.方法名(参数列表)
标准表达式写法
public void com.yujie.service.impl.AccountServiceImpl.saveAccount();
我们的切入点表达式明确的说明了这个方法要对哪个方法进行增强。
访问修饰符可以省略
void com.yujie.service.impl.AccountServiceImpl.saveAccount();
返回值可以使用通配符表示任意返回值,即void可以改为*
包名可以使用通配符来表示任意包,但是有几级包就需要写几个*,比如有4个包,就写*.*.*.*.
包名可以使用..表示当前包及其子包
* *..AccountServiceImpl.saveAccount()表示任意包下的只要有一个AccountServiceImpl类都会被增强
类名和方法名都可以使用*来实现通配。
如果写成这样* *..*.*(),也只会有两个方法被执行。因为有一个方法有参数。
参数列表
可以直接写数据类型:
基本类型直接写名称 int引用类型写包名.类名的方式 java.lang.String
可以使用通配符表示任意类型,但是必须有参数* *..*.*(*)
当我们把参数写成..表示参数有无都可以,即真正的全通配写法
全通配写法
* *..*.*(..)
实际开发中切入点表达式的通常写法
切到业务层实现类的所有方法* com.yujie.service.impl.*.*(..)
<!--配置通知的类型,并且建立通知方法--><aop:before method="printLog" pointcut="execution(* *..*.*())"></aop:before>
<!--配置通知的类型,并且建立通知方法--><aop:before method="printLog" pointcut="execution(* *..*.*(int))"></aop:before>
<aop:before method="printLog" pointcut="execution(* *..*.*(*))"></aop:before>
<aop:before method="printLog" pointcut="execution(* *..*.*(..))"></aop:before>
在实际开发中,最好不要写成这种全通配的方式,否则你程序在执行的时候所有类的方法都满足于这个条件,增强代码就都执行了一遍,这样肯定不是我们所需要的。
实际开发中切入点表达式的通常写法
切到业务层实现类的所有方法* com.yujie.service.impl.*.*(..)
Spring框架----切入点表达式的写法相关推荐
- Spring切入点表达式常用写法
Spring切入点表达式常用写法 自从使用AspectJ风格切面配置,使得Spring的切面配置大大简化,但是AspectJ是另外一个开源项目,其规则表达式的语法也稍稍有些怪异. 下面给出一些常见示例 ...
- Spring AOP切入点表达式
AOP(Aspect Oriented Programming):是面向切面编程的技术.AOP基于IOC基础,是对OOP的有益补充. AOP术语名词 Joinpoint:连接点是指所有可能织入通知的方 ...
- 切入点表达式的写法详解
切入点表达式的写法 execution( [权限修饰符] 返回值类型 包名.类名.方法名(参数列表)) 修饰符:可以省略 返回值类型:可以指定类型.比如 String,Integer等 * ,表示任意 ...
- Spring AOP 切入点表达式
切入点指示符用来指示切入点表达式目的,,在Spring AOP中目前只有执行方法这一个连接点,Spring AOP支持的AspectJ切入点指示符如下: execution:用于匹配方法执行的连接点: ...
- 【Spring】切入点表达式、函数
切入点决定额外功能加入位置(方法) <!--execution(* * (..)) 匹配了所有方法--> <aop:pointcut id="pc" expres ...
- aspectj框架切入点表达式
AspectJ 定义了专门的表达式用于指定切入点.表达式的原型是: execution(modifiers-pattern? ret-type-pattern declaring-type-patte ...
- spring aop切点表达式常见写法
- Spring之AOP 切入点表达式写法
切入点表达式的写法: 关键字:execution(表达式)表达式: 访问修饰符 返回值 包名.包名.包名-类名.方法名(参数列表)标准的表达式写法:public void com.example.se ...
- Spring切点表达式常用写法
任意公共方法的执行: execution(public * *(..)) 任何一个名字以 set 开始的方法的执行: execution(* set*(..)) AccountService 接口定义 ...
最新文章
- android之AlertDialog 点击其它区域自己主动消失
- log4j配置不生效
- time,atoi,strstr
- Java SHAA加密
- 1.3.1 单隐层网络的数学实现
- 关于源码输出,浏览器不解析Html标签
- ActiveMQ群集,持久订阅者和虚拟主题可助您一臂之力
- Spring MVC3 Hibernate CRUD示例应用程序
- intellij常用快捷键
- android记事本的app,自己编写的Android记事本APP软件
- win10系统自带防病毒配置
- 华为网络安全工程师:HCNA-Security(H12-711)题型解析(第一部分)-马青-专题视频课程...
- 现代处理器设计——超标量处理器基础1-4
- 在 WSO2 ESB 5.0.0 中使用 MyBatis 框架
- linux 字幕制作工具,Aegisub下载、安装和使用:Ubuntu字幕编辑软件
- 【传感器大赏】酒精传感器
- ImageJ划痕实验分析
- Layui数据表格每一行动态显示倒计时
- 虚拟机共享目录添加按钮灰色_共享按钮将成为PS4最重要的遗产
- iOS客户端monkey测试
热门文章
- 华为P30现身华为新加坡官网:坐实水滴屏
- 诺基亚继续打情怀牌:怀旧小屏手机入网!
- python实现录音小程序 界面_微信小程序录音界面以及功能实现
- python输出print(x+y)_Python语句序列“x='car';y=2;print(x+y)”的输出结果是() (2.0分)_学小易找答案...
- MySQL8 Zip的下载和安装
- bootstrap table传回的数据后端怎么获取_基于 Spring Cloud 开发的分布式系统,遇到爬虫、接口盗刷怎么办
- 【算法】马踏棋盘算法 骑士走周游算法
- 【ClickHouse】ClickHouse 同步 MySQL 数据库
- 【Elasticsearch】elasticsearch 索引 详解 index
- 【Spark】reduceByKey和GroupByKey