spring AOP

来源:互联网 发布:当程序员需要什么条件 编辑:程序博客网 时间:2024/06/11 18:49
AOP术语:
  1.   target:目标类,需要被代理的类
  2. 连接点:可能需要被拦截的方法
  3. 切入点:已经被增强的连接点
  4. 通知:增强的代码
  5. 织入:把增强应用到目标对象生成代理类的过程
  6. 切面:切入点和通知的结合
jdk动态代理:对“装饰者”模式的简化,装饰者的目标类的方法必须全部都实现,即使不做也要调用先前的方法。
     特点:必须有接口
目标类:接口+实现类
切面类:存放通知
工厂类:编写工厂生成代理
Proxy.newProxyInstance参数:
  1. loader 类加载器,动态代理类 运行时创建,任何类都需要类加载器将其加载到内存,一般使用当前类.class.getClassLoader();或者目标类实例.getClass().get,得到的类加载器相同
  2. 代理类需要实现的所有接口。目标类实例.getClass().getInterfaces(),此时只能获得自己的接口,不能得到父元素的接口,或者new Class[]{UserService.class}
  3. InvocationHandler 处理类,接口,必须有实现类,一般使用匿名内部类,提供invoke方法,代理类的每个方法执行时,都要调用一次Invoke,参数有proxy:代理对象,method:代理对象当前执行的方法的描述对象,args[]:方法的参数
spring 编写代理:半自动
     通知类型:按照通知在目标类的方法的连接点的位置,分为5类,尤其是环绕通知
     jar包:4+1+AOP联盟+spring AOP实现
spring 全自动:BeanPostProcessor后处理bean,用于在初始化方法调用前后执行的方法,其中可以加入jdk的动态代理。
     从spring容器获得目标类,如果配置了AOP,spring将自动从后处理bean生成代理。
      步骤:
  1. 得到目标类
  2. 配置文件生成AOP




0 0