1.AOP:
aop:面向切面编程,oop(面向对象编程,是一种纵向的关系,aop就是一种横向的关系,是对oop的补充),具体做法就是
用动态代理生成代理类-?给程序统一添加功能的技术,这个代理类和被代理对象有共同的接口。
静态代理:写一个代理类实现被代理类(目标类)的目标接口,但是这种写法就是每次代理要写被代理类的时候都要写一个代理类,很慢发,
所以有了动态代理。
动态代理:不写代理类,直接得到代理class对象,根据对象用反射的方法取得创建的代理实例。
但是不写代理类的话就不能获得class的(构造器,方法,字段等,代理对象只需要专注增强代码的编写。即使实现相同接口,
接口无法创建对象。
---
1.proxy入口有个静态方法,只要你给它类加载器和接口,他就会返回给你代理类
2.可以通过接口的Class对象,创建一个代理Class,通过代理Class(构造器)即可创建代理对象。 proxy.getProxyClass() 用class造class
3.根据class构造器创建对象需要传入InvocationHandler,每次调用代理对象的办法最后都会调用InvocationHandler.invoke
2.动态代理(以后再补充,今天状态极差)
3.aspectj的使用:
aspectj:aop框架
使用:
(基于xml)
导jar包

service和Impl


要增强的配置(Myaspect):

applicationcontextxml:(增强)

效果:
add增强了,update没增强

AOP名词解释:
JoinPoint连接点:可以被拦截的点(可以被增强的方法),例如addUser,updateUser
pointCut切入点:被增强的方法,例如此例中adduser被增强了,updateuser没被增强,因此 adduser是切入点,updateuser不是
advice通知:表示增强
Aspect切面:多个通知和多个切入点组成 (pointcount 和 advice)
Target:即将被增强的对象
weaving织入:把通知作用到切入点的过程
--------------------------------------------------------------------------
五种通知类型:
前置通知:目标方法执行前可以在这个通知中做权限拦截
后置通知:在执行后做日志管理
环绕通知:在前后执行都可以做事务管理
异常通知:在代码出异常的时候会执行我们做事务回滚等内容
最终通知:不管是否异常都会做(用于释放资源)
浙公网安备 33010602011771号