问题标签 [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.
java - Java Annotation and Processor 将方法标记为可以调用一次且只能调用一次?
我需要能够标记方法,以便它们在被多次调用时抛出 RuntimeException。
我正在尝试强制执行一些单一的赋值语义,并且我的类的参数数量太大而无法放入单个构造函数中,我需要能够让这些类JAXB
也知道,所以对象需要是可变的,但我想要强制执行单一赋值语义。
我很确定我可以用 Aspects 做到这一点,但我真的希望能够使用我自己的 Annotations 处理器来代替。
我知道如何在 Python 中使用装饰器来做到这一点。
如何编写一个注释处理器,它可以在运行时拦截对注释方法的调用,而不仅仅是在编译时?
我想我正在使用动态代理拦截方法调用,我只需要弄清楚如何将它们与我的注释处理器集成。
动态代理要求您使用接口,这很麻烦,我现在有一个CGLib MethodInterceptor工作,对拦截和装饰的要求要少得多,但会增加依赖项。
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.
- For refection: Can only override "interface" via java.lang.reflect.Proxy http://download.oracle.com/javase/1.3/docs/guide/reflection/proxy.html
- for cglib: it cannot create instance of no default constructor and constructor calling non-private member methods http://insufficientinformation.blogspot.com/2007/12/spring-dynamic-proxies-vs-cglib-proxies.html
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
java - 从注释处理器应用 CGLib 代理
我有一个正在工作的注释处理器,它在编译时处理我的自定义注释,我想应用一个 CGLIB 代理来将逻辑应用于一些使用的方法MethodInterceptor
,我让这两件事独立工作。我不知道如何应用注释处理器中的 CGLIB 代码。
我想要做的是能够使用我的自定义注释来注释一个类,并让它自动添加Enhancer
我已经应用的代码,这样我就不必手动应用Enhancer
我自己的代码。
这似乎是编译时注释处理的完美用例。
spring - Spring AOP - 错误生成代理
我正在使用 spring AOP 的周围建议来捕获事务的处理时间。我在应用程序启动期间收到以下错误
我在这个线程的帮助下确定了问题所在。但是我不能将 coreMessageResourceAccesor bean 更改为使用基于 setter 的注入,因为它使用 spring 类并且该类没有 arg 构造函数
下面是bean的配置
如果有人可以提供帮助,我将不胜感激。谢谢你的时间。
java - Spring:使用@Resource 注入具体类是否需要CGLIB
我已经使用 spring-instrument.jar 配置了带有 AspectJ LTW 的 Spring 3.0.6,并且:
从依赖项中删除 CGLIB 时,即使在创建 MyBean 之后(并且它的 @PostConstruct 已运行),我也会收到以下异常:
这是否意味着即使存在加载时间编织器,我也应该拥有 CGLIB?
java - Dalvik 的 ASM 或 CGLIB 模拟
我正在寻找可用于 Dalvik 字节码的 CGLIB 模拟。Android世界有这样的库吗?
也许,有一种方法可以即时将 CGLIB 结果转换为 Davlik 字节码?
java - Spring,CGLIB:为什么不能代理泛型类?
我想问一下异常的根本原因:
当我们让 Spring 为类生成代理(即proxy-target-class="true"
在事务管理器上设置)时,会在 Spring 中发生这种情况:
并且当要代理的类是参数化类时,即
例如,完整的故事可以阅读这个问题:Abstract DAO pattern and Spring's "Proxy cannot be cast to ..." question!
问题:为什么Spring不能代理这个类?是因为它使用旧的代码生成库吗?因为类型擦除?如果SomeDAOImpl
不是泛型类,它会成功(我检查过)。
请不要这样回答:“你应该代理接口,而不是类”。我知道。
java - 未找到休眠类
我是休眠新手,我正在尝试创建一个示例休眠搜索项目...当我尝试运行该项目时,出现以下异常:
我用谷歌搜索,答案是包括 asm 和 cglib 库。我这样做了,但我仍然得到同样的例外。我应该怎么办?我正在使用 eclipse 来运行项目。
java - 如何拦截Java中的对象创建
我有一个有点奇怪的要求。我猜。
我想使用我创建的自定义代理来装饰实现特定接口的所有对象,但我需要它对代码本身透明。可以包含在构建过程中的东西将是完美的。
我在考虑 AOP 但没有看到这样的功能,我正在寻找想法,甚至是疯狂的想法。我正在考虑在编译后更改源代码并重新编译它,至少替换对 new 的直接调用(我想这不会通过反射来创建对象,但会是一个好的开始)但我可以想到一百万个问题这可能会打破我的主要目标,即使此类仪器尽可能透明。
你们中有些人对这种不寻常的事情有一些经验吗?
问候
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
.