• spring aop 的一个思考


    问题:

      spring  aop 默认使用jdk代理织入。

      也就是我们常这样配置:<aop:aspectj-autoproxy /> 

      通过aop命名空间的<aop:aspectj-autoproxy />声明自动为spring容器中那些配置@aspectJ切面的bean创建代理,织入切面。当然,spring

      在内部依旧采用AnnotationAwareAspectJAutoProxyCreator进行自动代理的创建工作,但具体实现的细节已经被<aop:aspectj-autoproxy />隐藏起来了

      <aop:aspectj-autoproxy />有一个proxy-target-class属性,默认为false,表示使用jdk动态代理织入增强,当配为<aop:aspectj-autoproxy  poxy-target-      class="true"/>时,表示使用CGLib动态代理技术织入增强。

    疑问:

      平时我们开发的时候会在controller 做切面做操作 记录。 

      @Controller
      @RequestMapping("loginLog")
      public class LoginLogController {。。。。}

      我们的controller 没有实现接口啊。再使用jdk代理好吗?

    网友解答:

      即使proxy-target-class设置为false,如果目标类没有声明接口,则spring将自动使用CGLib动态代理

      (不知道这样对不对?????????)

    问这个问题的意义:

      我在做数据同步的时候。使用切面的形式  切换数据源。这时候遇到一个问题。就是 mybatis的 mapper 接口切不到。百度后我们使用 CGLib动态代理 ;也就是proxy-target-class=true。 所以修改为 false 。

    引发了另一个问题: 配置的 位置问题

      http://blog.csdn.net/my_nice_life/article/details/52910718

      http://www.cnblogs.com/hustyangli/archive/2008/09/01/1281319.html

    总结: spring很智能。

       

  • 相关阅读:
    srum.3
    进程调度
    Scrum 项目——1
    《构建之法》—第6-7章
    团队合作——2
    团队合作——1
    作业调度_3
    作业调度——实验2
    典型用户
    【软件工程】做汉堡包
  • 原文地址:https://www.cnblogs.com/smallstudent/p/6270078.html
Copyright © 2020-2023  润新知