问题标签 [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 投票
5 回答
812 浏览

java - Java Annotation and Processor 将方法标记为可以调用一次且只能调用一次?

我需要能够标记方法,以便它们在被多次调用时抛出 RuntimeException。

我正在尝试强制执行一些单一的赋值语义,并且我的类的参数数量太大而无法放入单个构造函数中,我需要能够让这些类JAXB也知道,所以对象需要是可变的,但我想要强制执行单一赋值语义。

我很确定我可以用 Aspects 做到这一点,但我真的希望能够使用我自己的 Annotations 处理器来代替。

我知道如何在 Python 中使用装饰器来做到这一点。

如何编写一个注释处理器,它可以在运行时拦截对注释方法的调用,而不仅仅是在编译时?

我想我正在使用动态代理拦截方法调用,我只需要弄清楚如何将它们与我的注释处理器集成。

动态代理要求您使用接口,这很麻烦,我现在有一个CGLib MethodInterceptor工作,对拦截和装饰的要求要少得多,但会增加依赖项。

0 投票
2 回答
2307 浏览

java - How to override instance/concrete class's method runtime? (e.g. reflection, cglib)

What I wanna do is a method that can

  • generate instance of Class X (a class variable passed in arg) and
  • override some of it's method

More specifically, the parent class X I want to override contains

  • Contains no default constructor (e.g. all constructors with args)
  • Constructors calling non-private method within the same class

Originally I thought it's quite simple to use reflection or something similar, Then I found there's limitation on implementing my requirement.

I think this is achievable, since Mockito can do all kinds of method injection runtime.
Please anyone give some advise, Thanks.
The pseudo-code I image is like this:

  • Original problem scenario

I was intended to test a Class which has several methods calling X1.get(), X2.get(), X3.get()
In some test case, I need to make Xn.get() to return something I can control for test (e.g. null)
Due to below constraint:

  • But due to mock tool restriction to JMock 1.0 (I have no control :( ), so I cannot just simply mock Xn.get() to returns "someSpecifiedObjects"
  • Xn has no null constructors and constructors calling non-private member

My workaround is self made Xn Class and pass them to test case to let Cn.get() to be expected
code example:

And this kind of thing is spread-ed over the Test Case.
Therefore, In order to reduce duplicate code, I would like to build a method to generate Xn instance with specified overrided method for test. e.g.

Then, the problem of this post comes

0 投票
1 回答
496 浏览

java - 从注释处理器应用 CGLib 代理

我有一个正在工作的注释处理器,它在编译时处理我的自定义注释,我想应用一个 CGLIB 代理来将逻辑应用于一些使用的方法MethodInterceptor,我让这两件事独立工作。我不知道如何应用注释处理器中的 CGLIB 代码。

我想要做的是能够使用我的自定义注释来注释一个类,并让它自动添加Enhancer我已经应用的代码,这样我就不必手动应用Enhancer我自己的代码。

这似乎是编译时注释处理的完美用例。

0 投票
1 回答
738 浏览

spring - Spring AOP - 错误生成代理

我正在使用 spring AOP 的周围建议来捕获事务的处理时间。我在应用程序启动期间收到以下错误

我在这个线程的帮助下确定了问题所在。但是我不能将 coreMessageResourceAccesor bean 更改为使用基于 setter 的注入,因为它使用 spring 类并且该类没有 arg 构造函数

下面是bean的配置

如果有人可以提供帮助,我将不胜感激。谢谢你的时间。

0 投票
3 回答
21504 浏览

java - Spring:使用@Resource 注入具体类是否需要CGLIB

我已经使用 spring-instrument.jar 配置了带有 AspectJ LTW 的 Spring 3.0.6,并且:

从依赖项中删除 CGLIB 时,即使在创建 MyBean 之后(并且它的 @PostConstruct 已运行),我也会收到以下异常:

这是否意味着即使存在加载时间编织器,我也应该拥有 CGLIB?

0 投票
3 回答
1995 浏览

java - Dalvik 的 ASM 或 CGLIB 模拟

我正在寻找可用于 Dalvik 字节码的 CGLIB 模拟。Android世界有这样的库吗?

也许,有一种方法可以即时将 CGLIB 结果转换为 Davlik 字节码?

0 投票
4 回答
3665 浏览

java - Spring,CGLIB:为什么不能代理泛型类?

我想问一下异常的根本原因

当我们让 Spring 为类生成代理(即proxy-target-class="true"在事务管理器上设置)时,会在 Spring 中发生这种情况:

并且当要代理的类是参数化类时,即

例如,完整的故事可以阅读这个问题:Abstract DAO pattern and Spring's "Proxy cannot be cast to ..." question!

问题:为什么Spring不能代理这个类?是因为它使用旧的代码生成库吗?因为类型擦除?如果SomeDAOImpl不是泛型类,它会成功(我检查过)。

请不要这样回答:“你应该代理接口,而不是类”。我知道。

0 投票
1 回答
2250 浏览

java - 未找到休眠类

我是休眠新手,我正在尝试创建一个示例休眠搜索项目...当我尝试运行该项目时,出现以下异常:

我用谷歌搜索,答案是包括 asm 和 cglib 库。我这样做了,但我仍然得到同样的例外。我应该怎么办?我正在使用 eclipse 来运行项目。

0 投票
1 回答
657 浏览

java - 如何拦截Java中的对象创建

我有一个有点奇怪的要求。我猜。

我想使用我创建的自定义代理来装饰实现特定接口的所有对象,但我需要它对代码本身透明。可以包含在构建过​​程中的东西将是完美的。

我在考虑 AOP 但没有看到这样的功能,我正在寻找想法,甚至是疯狂的想法。我正在考虑在编译后更改源代码并重新编译它,至少替换对 new 的直接调用(我想这不会通过反射来创建对象,但会是一个好的开始)但我可以想到一百万个问题这可能会打破我的主要目标,即使此类仪器尽可能透明。

你们中有些人对这种不寻常的事情有一些经验吗?

问候

0 投票
2 回答
3988 浏览

java - 通过CGLIB代理时方法注释为空

通过反射查找属于通过 CGLIB 代理的类的方法的注释时,我遇到了一种奇怪的行为。我们在 Spring 中使用 CGLIB,如果我只使用注释对方法进行注释,则效果很好(我可以通过getAnnotations()对应Method对象上的方法检索注释)。如果我用 2 个注释来注释该方法(无论注释的顺序如何),getAnnotations()只需 return null. 两个注释都有RetentionPolicy.RUNTIME.

我读到 CGLIB 存在一些问题,但奇怪的是它只适用于一个注释,当我放置 2 个注释时它返回 null。

有什么建议么?

(使用 Spring 3.0.5 和 CGLIB 2.2.2)

添加代码:

第一个注释是:

第二个注释是

用于检查注释的代码块是

如果我同时使用 @Produces 和 @JamonMonitored 注释方法,getAnnotation(Produces.class)则始终为null.