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织入:把通知作用到切入点的过程

--------------------------------------------------------------------------

五种通知类型:

前置通知:目标方法执行前可以在这个通知中做权限拦截

后置通知:在执行后做日志管理

环绕通知:在前后执行都可以做事务管理

异常通知:在代码出异常的时候会执行我们做事务回滚等内容

最终通知:不管是否异常都会做(用于释放资源)

 

posted on 2021-12-15 19:14  realAdam  阅读(49)  评论(0)    收藏  举报