问题标签 [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 回答
1221 浏览

spring - 使用 HibernateTemplate 持久化 CGLIB 代理实体

我几乎到处搜索,但似乎没有人遇到这个问题。我有 Spring MVC 应用程序。有一个 UserImpl 实体,它在上下文配置文件中声明为请求范围的 bean,并由 UsersController 引用。UsersController 引用的 UserImpl 对象实际上是一个 CGLib 代理(是为什么?)。现在,当我第一次尝试使用 HibernateTemplate 持久化这样的代理对象时,我收到了这个错误:

org.hibernate.MappingException:未知实体:main.mvc.model.hibernate.UserImpl$$EnhancerByCGLIB$$9ac49631

经过一番搜索,我发现了类似的东西:

org.springframework.orm.hibernate3.support.ScopedBeanInterceptor

这有点解决了这个问题。现在我没有得到 MappingException 并且实体被持久化但是......数据库记录中的每个字段都是空的。有什么问题?

注意:当我对 UserImpl 实例进行硬编码并使用 UserServiceImpl 持久化它时,一切正常。

上下文配置的一部分:

用户控制器:

用户服务实现:

更新
好的,所以我添加了一些 AOP 魔术添加输出,在 ScopedBeanInterceptor 中处理实体对象时会发生什么。它完好无损。虽然 Hibernate 的 BasicBinder 是绑定空值到 SQL 语句。有什么帮助吗?

日志:

0 投票
1 回答
3665 浏览

hibernate - CGLIB 增强失败:参数类型不匹配

我收到以下错误:

Vocab域名列表:

执行此命令期间代码失败: Query q = sessionFactory.getCurrentSession().createQuery("SELECT vsd FROM VocabSubdomain vsd LEFT JOIN vsd.vocabSubdomainsLocs"); 列表 vsdl = q.list();


我在 pom.xml 中的依赖项

0 投票
1 回答
919 浏览

spring - 将 CGLIB 代理与 Ehcache CacheManager 一起使用

我想在我的 Spring 应用程序中使用 Spring AOP。在创建 AOP 代理时net.sf.ehcache.CacheManager,spring 上下文初始化失败,出现以下异常:

这是我对这个问题的理解 - Spring 正在尝试为net.sf.ehcache.CacheManager.__DEFAULT__应用)。现在,如果我有多个缓存管理器,例如 'abcCacheManager' 和 'xyzCacheManager' (类型为 EhCacheManagerFactoryBean),Spring 会遇到多个net.sf.ehcache.CacheManagers 并尝试为所有这些管理器创建代理对象(类似于net.sf.ehcache.CacheManager$$EnhancerByCGLIB$$b18c5958),但是使用 EhCache >=2.5 版本,我们同一虚拟机下不能有多个同名缓存。

我正在使用 EhCache 2.5.1,并希望避免仅出于此目的回到 2.4。我不确定这是否真的是我如何克服这个问题的问题。

注意:请注意这是否会有所帮助,但我也从调试语句中注意到CacheManager无参数构造函数仅由 spring/CGLIB 代理生成器xyzCacheManager调用,并通过将配置作为参数传递来调用它。

0 投票
1 回答
169 浏览

java - 自动保存模型的动态代理

我试图在 java 中使用代理来跟踪对象并在调用 set* 方法时保存它们,从而使一些自动魔术发生。我开始使用 java 的内置代理,一切正常,但据我所知,我需要为每个模型提供一个接口,这是我试图避免的事情。

这就是 CGLIB 的用武之地,它允许我在不使用接口的情况下创建模型的代理。但是,我现在如何检索原始对象,即我要保存的对象?

最佳解决方案类似于休眠使用的 EntityManager 接口,您可以在其中保留原始对象,但仍会对其进行跟踪。

0 投票
2 回答
4735 浏览

spring - 如何将 XML 更改为配置类?

对不起,我有点讨厌英语。

请帮我。我有一个问题。
我想将 XML 更改为 Java 类以供 @Configuration 和 @Bean 使用。
我该怎么办 ??

以下是我想改变的。
我不知道'module-context.xml',尤其是......
只是我想知道。

启动上下文.xml

模块上下文.xml

请告诉我一个人?

0 投票
1 回答
3146 浏览

java - CGLib 代理和无空构造函数

让我们考虑一下我有一些具有 B 类属性的 A 类。

不,我有 CGLIB 代理:

现在,当我使用CGLibClassA 时,代理会创建 ClassA 实例。

我的问题是如何将 classB 参数传递给这个代理,因为据我了解 CGLib 将为 ClassA 运行空构造函数?

0 投票
1 回答
2169 浏览

java - 避免 spring cglib 代理的问题

在 spring 中使用 cglib 代理会导致:

a) 构造函数的双重调用

b) 不允许拦截从另一个方法调用的方法

但是为什么spring创建一个bean然后是一个代理?是否可以动态生成扩展指定 bean 类的类,然后只调用一次构造函数?这将解决公共和受保护方法的a)和b)。我错过了什么吗?

0 投票
5 回答
5851 浏览

android - 使用 Mockito 1.9.5 和 DexMaker-Mockito-1.0 的验证错误

像许多其他人一样,我很高兴听到Mockito 现在可以与 Android 配合使用,并按照本教程亲眼看到它。一切似乎都令人振奋,我开始将模拟解决方案整合到我的 Android 测试项目中......

错误

但是,在设置我的应用程序的测试项目以利用mockito-all-1.9.5,dexmaker-1.0dexmaker-mockito-1.0jar 时,我在第一个测试用例中遇到了问题。其实也正是这个问题。我需要帮助的部分是;

我被告知这“还不能完全起作用”,因为堆栈跟踪暗示没有使用 DexMaker jar - 参考这个响应。但是,我怀疑我在项目设置方面做错了什么,所以我希望从这里的集体知识库中吸取教训,看看这确实是用户错误还是 beta 错误。

我的 Android 测试项目设置

请在下面找到我的测试项目配置的屏幕截图。该项目是通过 Android 向导创建的,除了在目录下包含 Mockito 和 DexMaker jar(如上所述)之外,没有其他特殊功能libs

测试项目配置

考试

不用管测试的内容(在执行单元测试之前测试失败)设置如下所述;

如果有人知道出了什么问题,那么请在这里发出声音。

0 投票
3 回答
793 浏览

java - 字节码操作能否在运行时更改 Java 方法的返回类型?

我想知道是否可以通过字节码操作来做这样的事情:

现在我想打电话:

并调用 String 参数的重载 hi 方法。

0 投票
1 回答
951 浏览

mockito - 可以在运行时包装 mockito 模拟本身吗?

如果我在运行时包装由 Mockito 创建的模拟,然后在包装器上调用一个方法,则不会调用包装的模拟。请看下面:

这是我运行的测试:

其中 Bar 是:

测试失败,我得到的输出是:

如果我将 Bar 变成一个类,如下所示:

测试继续失败,foo打印在控制台上,我得到输出:

我很困惑。

我要解决的真正问题是包装动态代理(由 Mule 通过组件绑定注入),以便记住对包装的动态代理的方法调用。我想让它足够通用,这样就足以包装动态代理对象而无需扩展任何接口。

谢谢