当前位置: 代码迷 >> Java Web开发 >> 求解spring aop cglib问题
  详细解决方案

求解spring aop cglib问题

热度:544   发布时间:2008-11-06 11:35:02.0
求解spring aop cglib问题
是这样的,我在使用spring的aop中不想用有接口的类,所以就用cglib来实现aop,我在ilb中加了cglib-nodep-2.1_3.jar等包,配置中这样写的
    <aop:aspectj-autoproxy proxy-target-class="true" />
    <bean class="org.springframework.aop.aspectj.annotation.AnnotationAwareAspectJAutoProxyCreator" />
    <bean class="com.bbs.aop.PutAop"/>
    <!-- test bean -->
    <bean id="testbean" class="com.test.Hello"/>
测试中这样写的:
    public void mytest(){
    BeanFactory bf = new ClassPathXmlApplicationContext("applicationContext_*.xml");
    Hello h = (Hello)bf.getBean("testbean");
    h.out();
    }
测试生成了一个代理    "$Proxy6",很明显这个$Proxy6是要有接口才能接的,十分不明白,我明明强制使用cglib来生成Hello子类了,为什么还是给我生成了个代理呢?不知道使用cglib还要有哪些配置,我用的spring是2.5的,知道问题的朋友能赐教一下吗?谢谢了
搜索更多相关主题的帖子: spring  aop  cglib  求解  

----------------解决方案--------------------------------------------------------
你是用annotation配置的吧。
你可以先用xml配置成功以后,再修改成annotation。
----------------解决方案--------------------------------------------------------
我配了xml的配置如下
    <aop:aspectj-autoproxy proxy-target-class="true" />
    <bean class="org.springframework.aop.aspectj.annotation.AnnotationAwareAspectJAutoProxyCreator" />
    <bean id="putaop" class="com.bbs.aop.PutAop"/>
    <!-- test bean -->
    <bean id="testbean" class="com.test.Hello"/>
    <aop:config>
         <aop:aspect id="getAspect" ref="putaop">
             <aop:pointcut id="alladduse" expression="execution(* com.test.Hello.out(..))" />
             <aop:before pointcut-ref="alladduse" method="qian"/>
         </aop:aspect>
    </aop:config>
增强的方法
    public void hou(){
        System.out.println("---使用了一个方法---");
    };
可结果还是一样
         java.lang.ClassCastException: $Proxy4
是不是有什么地方写得不对啊?
我看网上有些文章说要用cglib要配什么classpath的,但又没说要配成什么样的,奇怪了??
----------------解决方案--------------------------------------------------------
已经解决了!!!!结贴
----------------解决方案--------------------------------------------------------
  相关解决方案