求解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的,但又没说要配成什么样的,奇怪了??
----------------解决方案--------------------------------------------------------
已经解决了!!!!结贴
----------------解决方案--------------------------------------------------------