Spring AOP 切 dwr的问题
我想切一下dwr.jar中的一个类,用来将前台传入给dwr的参数打印出来。
请问这种需求spring aop能实现么,我试的时候,会出没有加bean的错误,也就是spring-aop只能对beans中的bean进行切面?而不能切外部的类,而必须加到bean中?
而且我实验的时候,spring-aop中配置好了的切点,只有通过spring的getBean引入(或类似)的方法引入的对象才能触发切点。
这一点太不灵活啦。
有高手能做来不。
另外,有通过其它方法实现对jar包中的某个类(没有源代码)进行监控的么?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
然后怎么切.JSP编译后产生的类?
这里有BUG了。。。。。。。。。。。。。。。。好像我从其它复制过来的html中的样式没有过滤完。。。。
@红薯
hzwamdy commented on
DWR-161 (dwr doesn't support spring with AOP) saying:
I had solove this problem,
< aop:aspectj-autoproxy proxy-target-class="true" expose-proxy="true"></aop:aspectj-autoproxy>
if i don't set the arg expose-proxy,We only can call the method defined in his interfact,we can't user the implements class method.so just add expose-proxy ="true"
Tried the issue with @Transactional annotation. Everything was solved using <aop:scoped-proxy />. Here's a complete example:
<tx:annotation-driven />
<bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager">
<property name="autodetectTransactionManager" value="true" />
<property name="allowCustomIsolationLevels" value="true" />
< /bean>
<bean id="trcalc" class="com.internna.dwr.sample.RemotedTransactionalImpl">
<dwr:remote javascript="TransactionalCalculator">
<dwr:include method="add"/>
</dwr:remote>
<aop:scoped-proxy />
< /bean>
<aop:aspectj-autoproxy proxy-target-class="false" />
I will update the docs to mention this use case.
If the solution doesn't work for other kind of aspects please reopen and attach a sample project.
spring的代理实现分2种情况:1.如果被代理类实现了一个或多个接口,此时使用jdk自带的代理类也就是"java.lang.reflect.Proxy"来生成代理类,此时当我们从bean工厂取出这个bean时(即使用getBean(**)方法)得到的bean并不是原来定义的类的对象,而是被代理后的对象,这个对象实现了被代理类所实现的接口,所以可以被当作"接口实例"对待.2.当被代理没有实现任何接口,此时使用cglib来生成代理类,这个代理类是被代理类的子类,所以可以被当作定义时的类的对象对待.
你出现这种情况很可能是因为对象已经被代理,而程序中没有用代理后正确的类型来接收这个代理对象造成的.
注解 也是算配置的吧,用注解和XML我都不关心。 我想要通过某一配置,让一个类如User类,所有对user的方法进行访问的,都记录下来,不论user的对象是通过spring.getBean,或是@Resource,亦或 new User() 前两种方式都能达到,但如何对 new User()产生的对象进行监控呢?AspectJ能做到为何Spring做不到?
你可以讲Aspectj与Spring结合着来用么~
加注释~~~