Spring batch 从Spring XD M5移动到1.0.0版时,使用和Spring数据的Cglib代理错误

Spring batch 从Spring XD M5移动到1.0.0版时,使用和Spring数据的Cglib代理错误,spring-batch,spring-data-neo4j,spring-xd,Spring Batch,Spring Data Neo4j,Spring Xd,我们正在将大量批处理作业从SpringXDM5迁移到1.0.0版本 在创建和部署作业时,在自动连接Spring数据存储库(本例中为Neo4J)时,我们遇到了cglib代理功能的问题 堆栈跟踪的尾部: Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'datasetRepository': Post-processing of FactoryBean'

我们正在将大量批处理作业从SpringXDM5迁移到1.0.0版本

在创建和部署作业时,在自动连接Spring数据存储库(本例中为Neo4J)时,我们遇到了cglib代理功能的问题

堆栈跟踪的尾部:

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'datasetRepository': Post-processing of FactoryBean's singleton object failed; nested exception is org.springframework.aop.framework.AopConfigException: Could not generate CGLIB subclass of class [class
 com.sun.proxy.$Proxy112]: 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 com.sun.proxy.$Proxy112
        at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.getObjectFromFactoryBean(FactoryBeanRegistrySupport.java:116)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getObjectForBeanInstance(AbstractBeanFactory.java:1512)
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:313)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1017)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:960)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:858)
        at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:480)
        ... 54 more
Caused by: org.springframework.aop.framework.AopConfigException: Could not generate CGLIB subclass of class [class com.sun.proxy.$Proxy112]: 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 com.sun.proxy.$Proxy112
        at org.springframework.aop.framework.CglibAopProxy.getProxy(CglibAopProxy.java:212)
        at org.springframework.aop.framework.ProxyFactory.getProxy(ProxyFactory.java:109)
        at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.createProxy(AbstractAutoProxyCreator.java:494)
        at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.wrapIfNecessary(AbstractAutoProxyCreator.java:379)
        at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.postProcessAfterInitialization(AbstractAutoProxyCreator.java:339)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsAfterInitialization(AbstractAutowireCapableBeanFactory.java:421)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.postProcessObjectFromFactoryBean(AbstractAutowireCapableBeanFactory.java:1698)
        at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.getObjectFromFactoryBean(FactoryBeanRegistrySupport.java:113)
        ... 61 more
Caused by: java.lang.IllegalArgumentException: Cannot subclass final class class com.sun.proxy.$Proxy112
        at org.springframework.cglib.proxy.Enhancer.generateClass(Enhancer.java:446)
        at org.springframework.cglib.transform.TransformingClassGenerator.generateClass(TransformingClassGenerator.java:33)
        at org.springframework.cglib.core.DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:25)
        at org.springframework.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:216)
        at org.springframework.cglib.proxy.Enhancer.createHelper(Enhancer.java:377)
        at org.springframework.cglib.proxy.Enhancer.createClass(Enhancer.java:317)
        at org.springframework.aop.framework.ObjenesisCglibAopProxy.createProxyClassAndInstance(ObjenesisCglibAopProxy.java:57)
        at org.springframework.aop.framework.CglibAopProxy.getProxy(CglibAopProxy.java:202)
        ... 68 more
Spring数据存储库界面用
@repository
注释如下:

spring-data-neo4j      : 3.2.0.RELEASE
spring-data-neo4j-rest : 3.2.0.RELEASE
@存储库
公共接口DatasetRepository扩展了GraphRespository
{
公共数据集findOneById(字符串id);
公共数据集findOneByName(字符串名称);
}
以及触发异常的bean类中相应的autowired属性:

@Autowired
私有数据存储数据库;
bean本身在我们的XD作业XML中定义如下:

spring-data-neo4j      : 3.2.0.RELEASE
spring-data-neo4j-rest : 3.2.0.RELEASE

以及配置bean(在作业cfg XML中扫描的组件):

@配置
@EnableNeo4jRepositories({“com.mycompany.repositories”})
公共类CustomNeo4jConfiguration实现初始化bean
我们部署到XD lib文件夹中的Spring Data Neo4J版本如下:

spring-data-neo4j      : 3.2.0.RELEASE
spring-data-neo4j-rest : 3.2.0.RELEASE
安装程序都在开发人员PC上(目前),XD以分布式模式运行:

  • redis服务器
  • Zookeeper服务器(1x)
  • Oracle作业存储库(目前为本地XE实例)
  • 1个管理员和1个容器
任何关于作业、Spring数据存储库或XD容器配置的帮助都将不胜感激


谢谢

删除GraphRepository上的@Repository注释,您应该会没事的。不要忘记启用组件扫描

更新:尝试将:
添加到作业XML中,但观察到相同的行为。能否提供Spring批处理配置?我现在正在处理Spring Batch(Batch-2266)中的一个bug,它具有相同的堆栈跟踪,所以我打赌这就是它,但我想确认一下。我正在尝试将应用程序代码减少到最低限度,以重新生成错误,但不幸的是,由于生产活动,它的优先级较低。批处理配置包含在SpringXDM5版本中,我已经修复了前面提到的问题(批处理2266)。您是否可以尝试使用Spring批处理的最新快照(在作业模块的lib目录中)打包作业?通过这样做,您将覆盖SpringXD提供的内容。这将有助于诊断。我会尝试一下(可能下周根据优先顺序)-我会随时通知你。