问题标签 [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.
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 语句。有什么帮助吗?
日志:
hibernate - CGLIB 增强失败:参数类型不匹配
我收到以下错误:
Vocab域名列表:
执行此命令期间代码失败: Query q = sessionFactory.getCurrentSession().createQuery("SELECT vsd FROM VocabSubdomain vsd LEFT JOIN vsd.vocabSubdomainsLocs"); 列表 vsdl = q.list();
我在 pom.xml 中的依赖项
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.CacheManager
s 并尝试为所有这些管理器创建代理对象(类似于net.sf.ehcache.CacheManager$$EnhancerByCGLIB$$b18c5958
),但是使用 EhCache >=2.5 版本,我们同一虚拟机下不能有多个同名缓存。
我正在使用 EhCache 2.5.1,并希望避免仅出于此目的回到 2.4。我不确定这是否真的是我如何克服这个问题的问题。
注意:请注意这是否会有所帮助,但我也从调试语句中注意到CacheManager
无参数构造函数仅由 spring/CGLIB 代理生成器xyzCacheManager
调用,并通过将配置作为参数传递来调用它。
java - 自动保存模型的动态代理
我试图在 java 中使用代理来跟踪对象并在调用 set* 方法时保存它们,从而使一些自动魔术发生。我开始使用 java 的内置代理,一切正常,但据我所知,我需要为每个模型提供一个接口,这是我试图避免的事情。
这就是 CGLIB 的用武之地,它允许我在不使用接口的情况下创建模型的代理。但是,我现在如何检索原始对象,即我要保存的对象?
最佳解决方案类似于休眠使用的 EntityManager 接口,您可以在其中保留原始对象,但仍会对其进行跟踪。
spring - 如何将 XML 更改为配置类?
对不起,我有点讨厌英语。
请帮我。我有一个问题。
我想将 XML 更改为 Java 类以供 @Configuration 和 @Bean 使用。
我该怎么办 ??
以下是我想改变的。
我不知道'module-context.xml',尤其是......
只是我想知道。
启动上下文.xml
模块上下文.xml
请告诉我一个人?
java - CGLib 代理和无空构造函数
让我们考虑一下我有一些具有 B 类属性的 A 类。
不,我有 CGLIB 代理:
现在,当我使用CGLib
ClassA 时,代理会创建 ClassA 实例。
我的问题是如何将 classB 参数传递给这个代理,因为据我了解 CGLib 将为 ClassA 运行空构造函数?
java - 避免 spring cglib 代理的问题
在 spring 中使用 cglib 代理会导致:
a) 构造函数的双重调用
b) 不允许拦截从另一个方法调用的方法
但是为什么spring创建一个bean然后是一个代理?是否可以动态生成扩展指定 bean 类的类,然后只调用一次构造函数?这将解决公共和受保护方法的a)和b)。我错过了什么吗?
android - 使用 Mockito 1.9.5 和 DexMaker-Mockito-1.0 的验证错误
像许多其他人一样,我很高兴听到Mockito 现在可以与 Android 配合使用,并按照本教程亲眼看到它。一切似乎都令人振奋,我开始将模拟解决方案整合到我的 Android 测试项目中......
错误
但是,在设置我的应用程序的测试项目以利用mockito-all-1.9.5
,dexmaker-1.0
和dexmaker-mockito-1.0
jar 时,我在第一个测试用例中遇到了问题。其实也正是这个问题。我需要帮助的部分是;
我被告知这“还不能完全起作用”,因为堆栈跟踪暗示没有使用 DexMaker jar - 参考这个响应。但是,我怀疑我在项目设置方面做错了什么,所以我希望从这里的集体知识库中吸取教训,看看这确实是用户错误还是 beta 错误。
我的 Android 测试项目设置
请在下面找到我的测试项目配置的屏幕截图。该项目是通过 Android 向导创建的,除了在目录下包含 Mockito 和 DexMaker jar(如上所述)之外,没有其他特殊功能libs
。
考试
不用管测试的内容(在执行单元测试之前测试失败)设置如下所述;
如果有人知道出了什么问题,那么请在这里发出声音。
java - 字节码操作能否在运行时更改 Java 方法的返回类型?
我想知道是否可以通过字节码操作来做这样的事情:
现在我想打电话:
并调用 String 参数的重载 hi 方法。
mockito - 可以在运行时包装 mockito 模拟本身吗?
如果我在运行时包装由 Mockito 创建的模拟,然后在包装器上调用一个方法,则不会调用包装的模拟。请看下面:
这是我运行的测试:
其中 Bar 是:
测试失败,我得到的输出是:
如果我将 Bar 变成一个类,如下所示:
测试继续失败,foo
打印在控制台上,我得到输出:
我很困惑。
我要解决的真正问题是包装动态代理(由 Mule 通过组件绑定注入),以便记住对包装的动态代理的方法调用。我想让它足够通用,这样就足以包装动态代理对象而无需扩展任何接口。
谢谢