问题标签 [cglib]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
667 浏览

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

我有一组相当奇怪的情况。我正在使用带有实现和接口的 bean 的 Spring 3.0.6。到目前为止,很正常的东西。我的 bean 也有一些受保护的方法。我正在使用一些 AOP(JDK 代理)并且一切正常。

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

由于我需要访问受保护的方法,我无法在接口中声明这些方法,所以我有点处于 catch-22 的情况。我尝试切换到 CGLIB 代理,但它们与其他顾问一起使用最终方法等建议 bean 时崩溃,因此这并不是真正的解决方案。

关于我能做什么的任何建议?我尝试使用 @PostConstruct 方法从应用程序上下文中检索 bean,但是(并不奇怪)它也只能检索 Proxied bean,因此无法将其转换为所需的实现。

任何建议,将不胜感激。

谢谢!

埃里克

0 投票
1 回答
6074 浏览

java - 如何在 Spring 配置文件中混合 CGLIB 和 JDK 代理?

该线程与我在这里遇到的一个问题有关,即需要访问建议类的受保护方法。我正在使用 Spring 3.0.6,并创建了一个 Spring 分析方面,我将其应用于使用 JDK 代理的大量 bean。

但是,由于需要访问一个特定 bean 中的受保护方法,我想建议它使用 CGLIB。我想继续使用 JDK 代理的所有其他 bean。

我混合使用了注释和 xml 配置,但这个特定方面是在 XML 配置中定义的。

我知道有<aop:scoped-proxy>标签,但据我所知,这适用于所有方面。

无论如何定义一个方面来使用CGLIB吗?

我试图将配置分成两部分,一个配置指定target-class="true"另一个target-class="false",但它似乎在那时将 CGLIB 应用于所有配置。

有没有办法做到这一点?

谢谢,

埃里克

0 投票
1 回答
933 浏览

java - Spring Framework 在 JBoss 上看不到 cglib

我的应用程序在 JBoss 5.1.0.GA 上使用 Spring Framework 3.0.5。框架由服务器提供,即框架库放在server/<servername>/lib目录下。该服务器由第三方管理,因此我无法将任何库添加到该服务器提供的环境中。在我的应用程序中必须使用 cglib。Spring 将其用于代理目的。cglib 不在 中server/<servername>/lib,因此我使用 maven将其包含cglib-2.2.2.jar在我的应用程序中。.war

问题是部署时出现以下错误:

无法代理目标类,因为 CGLIB2 不可用。将 CGLIB 添加到类路径或指定代理接口。

我检查了我的应用程序.war的 cglib 并在WEB-INF/lib目录中找到了它。AFAIK 位于此目录中的 jar 中的所有类都在类路径中,以及 .jar 中的类server/<servername>/lib。为什么Spring找不到cglib?

0 投票
4 回答
74547 浏览

java - JDK动态代理和CGLib有什么区别?

代理设计模式的情况下,JDK的动态代理和第三方动态代码生成API如CGLib有什么区别?

使用这两种方法有什么区别,什么时候应该更喜欢一种方法?

0 投票
1 回答
4163 浏览

android - 在 Android 上使用 Groovy

随着ASMDEX(用于 dex 文件的ASM )和dexmaker的出现,难道不能将 Groovy 移植到 Android 上吗?两个框架都允许在运行时生成 dex 字节码。

据我了解,不可能从内存中的 APK 修改 dex 类。但是是否可以将这些类复制到可写内存,在运行时修改这些副本并使用它们?

还有什么需要移植来处理 dex 类文件?CGLIB ?

0 投票
1 回答
347 浏览

proxy - cglib 是否在内存字节码或物理类中创建用于实现代理?

CGLIB 是非常流行的实现,用于实现代理机制。我很想知道,要代理一个特定的类,CGLIB 会创建其子类的内存实现,还是创建物理字节码然后实例化该类?

如果它在内存实现中创建,那么这样做会带来多少开销。我试图在 CGLIB 文档中找到此详细信息,但它没有指定或可能已被我跳过。

对于 javaassist 库,可能会问同样的问题。

0 投票
2 回答
6998 浏览

spring - 超类没有空构造函数,但没有给出参数。弹簧集成

我正在开发 Spring Integration 支持的 Web 应用程序。我正在使用 1.0.4.RELEASE。我使用 CGLib 代理。我有一个事务性消息端点。一切正常,但我尝试了一些注释。我使用注释配置,效果很好。我开始将我的服务激活器配置从 xml 切换到注释,但它失败了。

以下配置正常工作:

弹簧集成.xml

我的服务.java

尝试使用注释实现完全相同的功能(记住我使用 CGLIB,所以我不需要接口,但需要默认构造函数)我

  • 从我的 .xml 中删除服务激活器
  • 更改了我的服务:

更改了 MyService.java

我收到以下错误: java.lang.IllegalArgumentException: Superclass has no null constructors but no arguments were given

我看到很多线程描述了以下错误文章,但问题是关于自定义类。我的问题与 Spring 课程有关。

怎么了?为什么 Spring 尝试为 Spring 类创建代理,而不仅仅是为 MyService 创建代理?我的课以某种方式包装了吗?我不明白发生了什么。非常感谢帮助。

0 投票
1 回答
709 浏览

hibernate - asm 和 hibernate 以及 cglib 的兼容性问题...?

我正在获取 glassfish 服务器日志:,

我正在使用netbeans。最近三天我很沮丧。

请帮助如何消除此错误..?

0 投票
1 回答
7631 浏览

proxy - 带弹簧的 CGLIB 抛出 IllegalAccessError

我有一个启用了 aop 的 spring 应用程序,使用 cglib 代理进行日志记录:

我正在使用 cglib-nodep-2.2.2.jar 和 spring 3.1.1 这在 tomcat 或 jetty 中效果很好。但是,当我在 OC4J(使用 jdk1.6)上部署它时,我收到以下错误: 尝试代理的类 - ComponentRegistryImpl 是包私有的

0 投票
1 回答
1740 浏览

java - 向 Java 类添加字段

研究了在运行时使用 CGLib、ASM、BCEL(方面)和 Javassist 向类添加字段....

只是为了让我直截了当,看起来这些字节码操纵器不会更新实际的类,而是允许用户只转储修改(如使用 CGLib 和 writeFile 方法)。希望我能找到一个解决方案,(a)加载类(而不是使用 BCEL 执行 InputStream)和(b)更新类。

也许这很正常?人们通常会创建代理并传递代理吗?

我想要做的是在将对象传递给查找具有特定注释的字段(而不是属性)的框架之前添加一个字段(注意:不是通过 get/set 方法的属性)。所以“客户”正在创建我想要注入额外字段的目标类。使用 AOP 拦截对我想要操作这些对象的服务层的调用。