解决方案 »

  1.   

    好吧。。我发现了。
    <aop:aspectj-autoproxy proxy-target-class="true"/>这样就错了....
    <aop:aspectj-autoproxy/>这样就不报错.....这是为什么呀...
      

  2.   

    proxy-target-class="true" 这个是用cglib的动态代理,也就是 对于没有实现接口的类起作用的
    而不加这个,默认为false,用的是jdk的动态代理,是面向接口的
      

  3.   


    请问我在controller里做了int a = 1/0;然后抛出了异常...现在用的是jdk的动态代理....controller没有继承什么接口呀..就是一个普通的类.....可是为什么还是能用到aop呢?另外.....如果要用到cglib是否需要自己导入jar包?
      

  4.   


    请问我在controller里做了int a = 1/0;然后抛出了异常...现在用的是jdk的动态代理....controller没有继承什么接口呀..就是一个普通的类.....可是为什么还是能用到aop呢?另外.....如果要用到cglib是否需要自己导入jar包?抛异常之后前面的操作回滚了?
    cglib是要导jar包的
      

  5.   


    请问我在controller里做了int a = 1/0;然后抛出了异常...现在用的是jdk的动态代理....controller没有继承什么接口呀..就是一个普通的类.....可是为什么还是能用到aop呢?另外.....如果要用到cglib是否需要自己导入jar包?抛异常之后前面的操作回滚了?
    cglib是要导jar包的这个controller很简单的...没有什么dao的操作...就是直接return XXX.jsp 
    我就是不明白...controller又没有继承什么接口...我设置的是jdk动态代理.....不是应该不起作用的吗...
      

  6.   

    我试了,爆掉了
    Initialization of bean failed; nested exception is org.springframework.aop.framework.AopConfigException: Cannot proxy target class because CGLIB2 is not available. Add CGLIB to the class path or specify proxy interfaces.应该是服务器启动的时候就会报错
      

  7.   


    cglib不是比jdk动态代理使用范围更广吗.....jdk动态代理还需要接口...cglib都不需要接口...然后使用cglib出错....jdk动态代理就不报错?这不科学啊.....难道是我没导入cglib包的原因?再说了....使用jdk动态代理只能对接口类型对象才有效果吧....为何我一个controller都有效....aop的类...
    controller
    没继承接口的controller也可以被代理.....
      

  8.   

    不可能啊,整个Controller贴上来看看
      

  9.   

    Aop的类@Component
    @Aspect
    public class ExceptionLogger {

    // private static Logger log = LogManager.getLogger(ExceptionLogger.class);
    // @AfterThrowing(throwing="e", pointcut="execution(* test..*.*(..))")
    // public void logException(Throwable e){
    // log.error(e.getMessage(), e);
    // }

    @Before(value="execution(* test.HomeController.index(..))")
    public void show(){
    System.out.println("============================");
    }
    }Controller@Controller
    public class HomeController {
    @RequestMapping(value = { "/index", "/" })
    public String index() {
    //int a = 5/0;
    return "index";
    }
    }
    工程:http://pan.baidu.com/s/1i3GFnbn
    里面就2个类...一个aop的类..一个controller
    maven项目,直接clean package tomcat:run 就能运行
    地址栏localhost:8080/test 就可以访问controller
      

  10.   


    然后就是Controller不是继承接口....web.xml里设置的是jdk动态代理....然后还是能用aop.....
    谢谢啦~
      

  11.   

    好吧.....我来说说我现在的处理结果:
    1.最简单的方法:直接去掉proxy-target-class="true"
    2.不去掉也可以,把代理方法中的final去掉就行