代理:代理的思想是 由于我们的项目中 会存在着一些核心的业务功能 以及一些额外的功能。 对于额外的功能我们想在需要的时候引入,不用的时候拿掉。 代理类的引入提高了额外功能使用的灵活性,提高了项目的可维护性。
#动态代理
一:开发步骤
1.编写原始类
2.编写额外功能(通知)
###1前置通知,在原始核心功能前加入的额外功能 实现MethodBeforeAdvice
public void before(Method methdo, Object[] arrs ,Object obj)throwable{
System.out.println("核心功能执行前的额外功能");
};
###后置通知:在原始核心功能后加入的额外功能
###环绕通知:在原始核心功能的前后都加入额外功能
###异常通知 :当原始核心功能抛出异常时,加入的额外功能
定义切点:切点是指额外功能在项目中所要加入的位置。
<aop:pointcut expression = "execution(* ….(. .)) id=“pct”>
第一个:匹配返回值
第二个*:匹配包结构
第三个*:匹配类名
第四个*:匹配方法名
(. .):匹配参数列表,两个点的含义是匹配任意的参数
三:编织:(weave 也称之为织入)
<aop:advisor advice- ref = “” pointcut-ref = “”>