上一节我们实现了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框架----切入点表达式的写法相关推荐

  1. Spring切入点表达式常用写法

    Spring切入点表达式常用写法 自从使用AspectJ风格切面配置,使得Spring的切面配置大大简化,但是AspectJ是另外一个开源项目,其规则表达式的语法也稍稍有些怪异. 下面给出一些常见示例 ...

  2. Spring AOP切入点表达式

    AOP(Aspect Oriented Programming):是面向切面编程的技术.AOP基于IOC基础,是对OOP的有益补充. AOP术语名词 Joinpoint:连接点是指所有可能织入通知的方 ...

  3. 切入点表达式的写法详解

    切入点表达式的写法 execution( [权限修饰符] 返回值类型 包名.类名.方法名(参数列表)) 修饰符:可以省略 返回值类型:可以指定类型.比如 String,Integer等 * ,表示任意 ...

  4. Spring AOP 切入点表达式

    切入点指示符用来指示切入点表达式目的,,在Spring AOP中目前只有执行方法这一个连接点,Spring AOP支持的AspectJ切入点指示符如下: execution:用于匹配方法执行的连接点: ...

  5. 【Spring】切入点表达式、函数

    切入点决定额外功能加入位置(方法) <!--execution(* * (..)) 匹配了所有方法--> <aop:pointcut id="pc" expres ...

  6. aspectj框架切入点表达式

    AspectJ 定义了专门的表达式用于指定切入点.表达式的原型是: execution(modifiers-pattern? ret-type-pattern declaring-type-patte ...

  7. spring aop切点表达式常见写法

  8. Spring之AOP 切入点表达式写法

    切入点表达式的写法: 关键字:execution(表达式)表达式: 访问修饰符 返回值 包名.包名.包名-类名.方法名(参数列表)标准的表达式写法:public void com.example.se ...

  9. Spring切点表达式常用写法

    任意公共方法的执行: execution(public * *(..)) 任何一个名字以 set 开始的方法的执行: execution(* set*(..)) AccountService 接口定义 ...

最新文章

  1. android之AlertDialog 点击其它区域自己主动消失
  2. log4j配置不生效
  3. time,atoi,strstr
  4. Java SHAA加密
  5. 1.3.1 单隐层网络的数学实现
  6. 关于源码输出,浏览器不解析Html标签
  7. ActiveMQ群集,持久订阅者和虚拟主题可助您一臂之力
  8. Spring MVC3 Hibernate CRUD示例应用程序
  9. intellij常用快捷键
  10. android记事本的app,自己编写的Android记事本APP软件
  11. win10系统自带防病毒配置
  12. 华为网络安全工程师:HCNA-Security(H12-711)题型解析(第一部分)-马青-专题视频课程...
  13. 现代处理器设计——超标量处理器基础1-4
  14. 在 WSO2 ESB 5.0.0 中使用 MyBatis 框架
  15. linux 字幕制作工具,Aegisub下载、安装和使用:Ubuntu字幕编辑软件
  16. 【传感器大赏】酒精传感器
  17. ImageJ划痕实验分析
  18. Layui数据表格每一行动态显示倒计时
  19. 虚拟机共享目录添加按钮灰色_共享按钮将成为PS4最重要的遗产
  20. iOS客户端monkey测试

热门文章

  1. 华为P30现身华为新加坡官网:坐实水滴屏
  2. 诺基亚继续打情怀牌:怀旧小屏手机入网!
  3. python实现录音小程序 界面_微信小程序录音界面以及功能实现
  4. python输出print(x+y)_Python语句序列“x='car';y=2;print(x+y)”的输出结果是() (2.0分)_学小易找答案...
  5. MySQL8 Zip的下载和安装
  6. bootstrap table传回的数据后端怎么获取_基于 Spring Cloud 开发的分布式系统,遇到爬虫、接口盗刷怎么办
  7. 【算法】马踏棋盘算法 骑士走周游算法
  8. 【ClickHouse】ClickHouse 同步 MySQL 数据库
  9. 【Elasticsearch】elasticsearch 索引 详解 index
  10. 【Spark】reduceByKey和GroupByKey