Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Spring中注入具有受保护方法的JDK代理类?_Java_Spring_Aop_Cglib - Fatal编程技术网

Java 如何在Spring中注入具有受保护方法的JDK代理类?

Java 如何在Spring中注入具有受保护方法的JDK代理类?,java,spring,aop,cglib,Java,Spring,Aop,Cglib,我有一套相当奇怪的情况。我将Spring3.0.6与一个bean一起使用,该bean实现和接口。到目前为止,这些都很正常。我的bean还有一些受保护的方法。我正在使用一些AOP(JDK代理),一切正常 当我想将这个bean注入另一个包类时,我的问题就出现了。在正常情况下,我将能够注入实现并访问受保护的方法。不幸的是,因为它是JDK代理的,所以我只能基于接口进行注入 因为我需要访问受保护的方法,所以我无法在接口中声明这些方法,所以我有点陷入了两难境地。我尝试切换到CGLIB代理,但它们与其他顾问一

我有一套相当奇怪的情况。我将Spring3.0.6与一个bean一起使用,该bean实现和接口。到目前为止,这些都很正常。我的bean还有一些受保护的方法。我正在使用一些AOP(JDK代理),一切正常

当我想将这个bean注入另一个包类时,我的问题就出现了。在正常情况下,我将能够注入实现并访问受保护的方法。不幸的是,因为它是JDK代理的,所以我只能基于接口进行注入

因为我需要访问受保护的方法,所以我无法在接口中声明这些方法,所以我有点陷入了两难境地。我尝试切换到CGLIB代理,但它们与其他顾问一起崩溃(建议bean使用最终方法等),因此这不是真正的解决方案

关于我能做什么有什么建议吗?我曾尝试使用@PostConstruct方法从应用程序上下文检索bean,但它也只能检索代理bean,因此无法将其强制转换为所需的实现

如有任何建议,将不胜感激

谢谢


Eric

我能想到的解决方案是从代理对象获取实现

如上面的链接所示,“((建议)proxy).getTargetSource().getTarget()”返回代理对象的目标实现。现在可以将这个目标对象强制转换到Impl类中&然后在该Impl类上可以调用protected方法


看看这是否有效。

太棒了。谢谢不幸的是,我在6个月前还不知道这件事,所以我最终以自己的方式解决了这个问题(不记得有多随便),但这是下一次知道的好消息!