求解spring aop cglib问题

08-11-06 sushengzhou
是这样的,我在使用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的,知道问题的朋友能赐教一下吗?谢谢了

banq
2008-11-06 12:48
>不想用有接口的类
又是一个没有OO思想就去搞Spring的案例。

你为什么不想用有接口的类?你难道想违背面向接口编程这个基本OO原则?如果你真的更想松耦合,使用异步JMS等或基于http的command模式。

btw:如果你使用cgilib,那么就破坏了Java的JAAS,有安全风险。

sushengzhou
2008-11-06 13:09
额!其实我只是在做练习,有接口的没接口的都可以用,那有接口的我当然已经实现,现在是想试下没接口的方法而已,再说了,书上有这个方法我就去试一下,存在的总是有它存在的理由,希望各位能提供意义的建议及方法!谢谢!

sushengzhou
2008-11-06 18:11
已经解决了!!!!结贴

banq
2008-11-06 19:18
>存在的总是有它存在的理由
胡言乱语,犯罪也存在,你去试验一下?没有OO指导的编程就是没有灵魂的躯壳。不要说Spring不会诱导你犯罪,会让你犯设计上的罪。

以上不是针对楼主个人,我指出一个普遍现象,用这个案例做比喻,请谅解。