问题标签 [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 - 我应该升级到 CGLIB 3.0 吗?
我想知道是否/为什么应该将 CGLib 2.2.2 升级到 3.0 版。我正在将 CGLib 与最新版本的 Hibernate/Spring/Mockito 和 Java 7 一起使用。
我在网络上的任何地方都找不到此版本的发行说明或升级说明。
spring - 使用 Secured Annotation for Controller 结合 CGLib 和 Mybatis Spring
我希望有人可以帮助我解决这个问题:
我想使用以下安全配置:
<security:global-method-security secured-annotations="enabled" proxy-target-class="true" />
使用 CGLib 作为代理而不是 JDK 动态代理的原因是因为使用了这样的扩展接口:
不幸的是,这不起作用,因为如果使用继承,JDK 动态代理会丢失 RequestMapping 信息,不是吗?!
所以我尝试使用proxy-target-class="true"
上面的属性。但这似乎不能与 mybatis spring MapperFactoryBean 结合使用,我想用它来动态生成 DAO 实现:
这些配置会产生以下异常:
2013-01-24 10:30:12,216 [main] [ERROR] [] ContextLoader - Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'pidbStatisticLogServiceImpl': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.foo.bar.dao.api.admin.servicestatistic.StatisticLogDAO com.foo.bar.service.impl.admin.servicestatistic.PidbStatisticLogServiceImpl.statisticLogDAO; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.mybatis.spring.mapper.MapperFactoryBean#4': Post-processing of the FactoryBean's object failed; nested exception is org.springframework.aop.framework.AopConfigException: Could not generate CGLIB subclass of class [class $Proxy25]: Common causes of this problem include using a final class or a non-visible class; nested exception is java.lang.IllegalArgumentException: Cannot subclass final class class $Proxy25
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:288)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1120)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:522)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:461)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:607)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479)
at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:383)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:283)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:112)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4206)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4705)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
at org.apache.catalina.core.StandardService.start(StandardService.java:525)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
[...]
Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.foo.bar.dao.api.admin.servicestatistic.StatisticLogDAO com.foo.bar.service.impl.admin.servicestatistic.PidbStatisticLogServiceImpl.statisticLogDAO; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.mybatis.spring.mapper.MapperFactoryBean#4': Post-processing of the FactoryBean's object failed; nested exception is org.springframework.aop.framework.AopConfigException: Could not generate CGLIB subclass of class [class $Proxy25]: Common causes of this problem include using a final class or a non-visible class; nested exception is java.lang.IllegalArgumentException: Cannot subclass final class class $Proxy25
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:514)
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:87)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:285)
... 28 more
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.mybatis.spring.mapper.MapperFactoryBean#4': Post-processing of the FactoryBean's object failed; nested exception is org.springframework.aop.framework.AopConfigException: Could not generate CGLIB subclass of class [class $Proxy25]: Common causes of this problem include using a final class or a non-visible class; nested exception is java.lang.IllegalArgumentException: Cannot subclass final class class $Proxy25
at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:165)
at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.getObjectFromFactoryBean(FactoryBeanRegistrySupport.java:102)
at org.springframework.beans.factory.support.AbstractBeanFactory.getObjectForBeanInstance(AbstractBeanFactory.java:1443)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:249)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:873)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:815)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:730)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:486)
... 30 more
Caused by: org.springframework.aop.framework.AopConfigException: Could not generate CGLIB subclass of class [class $Proxy25]: Common causes of this problem include using a final class or a non-visible class; nested exception is java.lang.IllegalArgumentException: Cannot subclass final class class $Proxy25
at org.springframework.aop.framework.CglibAopProxy.getProxy(CglibAopProxy.java:217)
at org.springframework.aop.framework.ProxyFactory.getProxy(ProxyFactory.java:110)
at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.createProxy(AbstractAutoProxyCreator.java:473)
at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.wrapIfNecessary(AbstractAutoProxyCreator.java:359)
at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.postProcessAfterInitialization(AbstractAutoProxyCreator.java:319)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsAfterInitialization(AbstractAutowireCapableBeanFactory.java:412)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.postProcessObjectFromFactoryBean(AbstractAutowireCapableBeanFactory.java:1629)
at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:162)
... 38 more
Caused by: java.lang.IllegalArgumentException: Cannot subclass final class class $Proxy25
at org.springframework.cglib.proxy.Enhancer.generateClass(Enhancer.java:446)
at org.springframework.cglib.transform.TransformingClassGenerator.generateClass(TransformingClassGenerator.java:33)
[...]
这个问题有什么解决办法吗?proxy-target-class="true"
我可以更改 mybatis spring org.mybatis.spring.mapper.MapperFactoryBean 的行为吗?如何创建与spring 安全配置的属性结合使用的代理?
请帮我。我正在使用 spring 3.2.0、spring security 3.1.3 和 mybatis spring 1.1.1
谢谢, 奥利德
java - Spring-cglib 代理类层次结构中的行为
我有 2 节课
上面的 system.out 打印 null。我哪里出错了。请帮忙。这是 cglib 的工作方式吗?如果是这样,解决方法是什么谢谢
java - 如何拦截私有方法
有人可以解释一些模拟库(如 power mock)如何为私有方法创建代理。我对cglib进行了一些研究,但找不到拦截私有方法调用的方法。我特别想了解可用于拦截私有方法的任何低级库或核心 Java 技术。
java - 在编译期间自动添加未实现的方法
我正在尝试找到如何实现类似于 Eclipse 功能“添加未实现的方法”的 hack。
我不想在编写代码时添加这些方法,而是想在编译期间执行此操作,使用模板生成方法体。此外,我不想修改原始的 .java 源文件。
例如,假设我有以下内容:
编译它通常会导致错误,因为I.foo
没有实现。
我希望编译成功并随后执行使用我的模板。模板可以像{throw UnsupportedOpeationException()
} 这样简单。我确实希望能够获得有关方法和实现的接口的更多信息并在模板中使用它,但这应该不难吧?
我的第一个想法是尝试注释 ( AutoImplementMethods
),但注释处理器无法修改它正在处理的注释代码。
我对此感到有些满意,AspectJ
但我不明白如何使用类型间声明来完成。
除了使用我自己的 java 解析器和生成代码代码之外,有什么建议可以做到这一点吗?
java - maven repo 包含错误的 cglib 源 jar
我在 maven 中央仓库中遇到了 cglib 2.2.2 源 jar 的问题。它包含以下顶级条目:
它是故意完成的还是格式错误的源包?我已经重新打包了这个 jar 并将源代码从 src 目录移动到上层,并且 cglib 的所有源代码都可以访问,在此之前,一些 cglib 类没有源附件,但是源 jar 包含这些类。
java - 生成没有默认构造函数的类的子类
我需要使用 cglib 为没有默认构造函数的类生成子类。我有以下代码适用于具有默认构造函数的类:
新类应该有默认构造函数,需要从其超类调用一些非默认构造函数。
搜索了一下,发现cglib不能做这样的事情,需要使用asm。但是我找不到将默认构造函数添加到类的示例。
如果有人有一个如何实现它的例子,那就太好了。
java - Spring AOP示例的一些疑惑
我正在学习本教程的 Spring Framework 中的 AOP:http ://www.tutorialspoint.com/spring/schema_based_aop_appoach.htm
与上一个教程不同,我没有手动添加所需的 jars 文件,而是使用 Maven。
最初我在我的 pom.xml 中添加了这个依赖项(除了那些与 spring-core、spring-bean、spring-context、spring-context-support Spring 模块相关的)
但是,以这种方式不起作用并引发以下异常:
引起:java.lang.ClassNotFoundException:org.aspectj.weaver.reflect.ReflectionWorld$ReflectionWorldException
在线阅读我找到了解决方案:我必须在我的 pom.xml 中添加这两个依赖项:
所以现在我有两个疑问:
如果我还没有org.springframework.spring-aop,为什么我必须添加这个org.aspectj.aspectjtools依赖项?(另外...我注意到我可以删除org.springframework.spring-aop,这个没用)它们有什么区别?
为什么我必须添加cglib依赖项?我知道当我使用 @Configuration 和 @Bean 之类的注释时我必须使用 cglib ......但是为什么在这种情况下我需要这个没有这些注释的依赖项?
Tnx安德烈亚
java - 在 cglib 中使用 Dispatcher
有人可以解释一下在cglib代理中使用Dispatcher吗?
web-services - java.lang.NoClassDefFoundError:无法初始化类 net.sf.cglib.proxy.Enhancer
当我试图在响应时请求休息服务时,它得到异常..
我在运行 mvn 依赖项后得到这个结果:tree
这是在运行 mvn 依赖项后得到的:树,我检查了我对 cglib 的依赖项,但我不确定版本是否兼容,请检查让我知道哪些与我的项目兼容。
谢谢