求解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不会诱导你犯罪,会让你犯设计上的罪。

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