博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
AOP(三)
阅读量:6721 次
发布时间:2019-06-25

本文共 881 字,大约阅读时间需要 2 分钟。

  hot3.png

Spring中的Pointcuts,Advisors

使用Pointcuts可以配置被代理对象的哪些方法被代理.

使用Pointcust的好处:

1.如果不使用Pointcuts,就需要将判断逻辑硬编码到Advice里,这样Advice就与某些业务紧密耦合而无法复用.所以Pointcuts可以把方法是否需要被代理的判断逻辑与Advice进行解耦,同时实现了Advice的复用.
2.如果不使用Pointcusts,在每次执行Advice时都要进行判断,影响性能.而使用Pointcuts,每个方法只判断一次,之后就会将结果缓存起来.另外Spring在创建代理时会对那些不需要进行代理的方法进行优化,从而提高性能.

当然如果Advice与实际业务确实是紧密相连,也不会被其它业务复用,将判断逻辑硬编码也未尝不可.

org.springframework.aop.Pointcut

public interface Pointcut {    ClassFilter getClassFilter ();    MethodMatcher getMethodMatcher();}

org.springframework.aop.ClassFilter

public interface ClassFilter {    boolean matches(Class
clazz);}

org.springframework.aop.MethodMather

public interface MethodMatcher {    boolean matches(Method m, Class
targetClass); boolean isRuntime(); boolean matches(Method m, Class
targetClass, Object[] args);}

MethodMatcher分2类

  1. 静态
  2. 动态

转载于:https://my.oschina.net/lhplj/blog/758654

你可能感兴趣的文章
Celery底层原理
查看>>
sos 怎么在代码里设置将一个imagebutton放在屏幕的中间
查看>>
常用的列表和元祖
查看>>
红米4A手机刷开发版rom并且获取root权限
查看>>
if语句三种形式
查看>>
C# PDF 全攻略
查看>>
用户场景分析
查看>>
Linux下QT和qtCreator安装配置
查看>>
javascript+dom 编程艺术<2>
查看>>
你人生最重的枷锁是什么?
查看>>
MySQL学习(八)
查看>>
【转载】支持向量机(三)核函数
查看>>
K8s集群部署(一)------ETCD集群部署
查看>>
python 基本数据类型之整数和布尔值
查看>>
@font-face在vue中的使用
查看>>
MathType可以编辑带圈乘号吗
查看>>
Mac生成ssh key
查看>>
canvas绘图详解-05-线条的属性
查看>>
python socket通信案例
查看>>
第十章
查看>>