由于本人想通过spring的AOP的throwsAdvice 来记录操作的异常。但是我使用了这个方式配置,没有成功,老是出现异常。
   异常信息:
       java.lang.NoSuchMethodException: $Proxy51.loginInSys()
   真正的应该是:login.loginInSys()----》login是loginAction loginInSys是一个方法名称
   
   1.不使用这个AOP系统运行
   2.将这个AOP的切入点设置到DAO 或是Servcie中 系统都能正常运行
   这个说明我的throwsAdvice的实现应该是没有问题,出现的问题就是配置pointCut的设置有问题
   配置:
    <aop:pointcut expression="execution(*  com.aa.bb.**.action.*Action.*(..))" id="exPoint" />
    <aop:advisor advice-ref="throwsAdvice" pointcut-ref="exPoint" />
    <bean id="throwsAdvice" class="实现类"/>
   请大家给予好的方法。谢谢

解决方案 »

  1.   

    aop:config 加上 proxy-target-class="true" 试试
      

  2.   

    能解释一下吗?
        CGLIB可以代理的是类(无接口) JDK代理实现接口的实现类。
     但是按照这种解释的话,我就可以不去设置了。
       望你不吝赐教!!谢谢
      

  3.   

    Spring默认使用JDK代理实现接口的实现类。
      

  4.   

    默认这个我清楚,但是就是不知道为什么使用CGLIB去创建代理没有出现异常,但是使用JDK去创建代理就会有异常。我一直不清楚的就是这个问题。我看spring的官方的文档说的是:1.实现了至少一个接口以上的使用JDK;2.没有实现接口的用,方法中使用了final的方法的并且要用advice的使用CGLIB.
       我的action是继承了ActionSupport 这个类实现了多个接口。按照上面的说明去,设置的话,就会报错。这个我一直都想不通。还望你解释一下。谢谢
      

  5.   

    jdk代理只创建出来的对象只有你实现的接口里面的方法,
    loginInSys是LZ自己定义的