【JAVA】【SSH】【Initialization of bean failed】【AopConfigException】【BeanCreationException】

本文详细解析了在Spring整合Hibernate过程中遇到的一个典型错误——由于缺少CGLIB2而导致的Bean创建异常。文中不仅介绍了CGLIB的基本概念及其在Spring AOP中的作用,还提供了具体的解决方案。
部署运行你感兴趣的模型镜像

【错误主要信息】org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userService' defined in file [D:\eclipse-jee\workspace\spring\Spring_1801_Spring_Hibernate_Transaction\bin\com\bjsxt\service\UserService.class]: Initialization of bean failed; nested exception is org.springframework.aop.framework.AopConfigException: Cannot proxy target class becauseCGLIB2 is not available. Add CGLIB to the class path or specify proxy interfaces.

【错误原因】Caused by: org.springframework.aop.framework.AopConfigException: Cannot proxy target class becauseCGLIB2 is not available. Add CGLIB to the class path or specify proxy interfaces.


今天在做Spring整合Hibernate的实验的时候,前面一直都按照文档里面的配置来的,没有什么问题。

然后在做事务处理的时候,报了一个错(如上错误信息所示),找了半天终于找到了解决办法。


大家看我报错的内容,特别是我加红的部分,其实就特别明显了,CGLIB2多次出现,其实我也不知道是什么意思,查一下吧。

CGLIB:(Code Generation Library) 是一个Code生成类库,它可以在运行期扩展Java类与实现Java接口。Hibernate用它来实现PO(Persistent Obeject 持久化对象)字节码的动态生成。

    CGLIB是一个强大的高性能的代码生成包。它广泛的被许多AOP(Aspect Oriented Propramming 面向切面编程)的框架使用,例如Spring AOP和dynaop,为他们提供方法的interception(拦截)。


说白了,就是缺少cglib-nodep-2.1_3.jar包,导入后异常消除。

我是导入到我自己建的这个Spring的包集合里面,(你们根据情况具体分析)


在Java中利用动态代理实现数据库连接与事务的自动管理,如何使用Java动态代理?

    要求被代理对象要实现一个接口,如果不想实现接口怎么办呢?使用开源的cglib可以实现对一个类对象的代理,而不要求实现接口。

    使一个没有实现接口的普通类也可以以注解的方式来自动打开数据库连接和事务,当然是通过cglib来实现的。

    因为cglib通过这种实现代理是通过生成被代理类的子类来实现,被代理的类不能是final的,即需要能够被继承。另外,对static的方法也是无效的。


类似这种org.sring.....的报错有很多不同的样式,一般都是缺少包,我们只需要查到缺少哪个包,然后导入即可,导入的时候,要仔细。。


--------------------------------------------------------------------

原文地址:https://neveryu.github.io/guestbook/

Githubhttps://github.com/Neveryu

新浪微博http://weibo.com/Neveryu


 




更多学习资源请私信我的新浪微博...

您可能感兴趣的与本文相关的镜像

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

java.lang.IllegalStateException: Failed to load ApplicationContext for [MergedContextConfiguration@7de3206d testClass = jp.co.sej.ssc.sh.sshb0051.Sshb0051Test08, locations = [], classes = [jp.co.sej.ssc.Application, jp.co.sej.ssc.sh.sshb0051.Sshb0051JobConfig, jp.co.sej.ssc.sh.sshb0051.common.TestConfig], contextInitializerClasses = [], activeProfiles = [], propertySourceDescriptors = [], propertySourceProperties = [], contextCustomizers = [org.springframework.batch.test.context.BatchTestContextCustomizer@6326d182, [ImportsContextCustomizer@6dece1f9 key = [@org.springframework.context.annotation.ComponentScan(basePackageClasses={}, basePackages={"common"}, excludeFilters={}, includeFilters={}, lazyInit=false, nameGenerator=org.springframework.beans.factory.support.BeanNameGenerator.class, resourcePattern="**/*.class", scopeResolver=org.springframework.context.annotation.AnnotationScopeMetadataResolver.class, scopedProxy=DEFAULT, useDefaultFilters=true, value={"common"}), jp.co.sej.ssc.cl.sclb1040.Sclb1041]], org.springframework.boot.test.context.filter.ExcludeFilterContextCustomizer@9635fa, org.springframework.boot.test.json.DuplicateJsonObjectContextCustomizerFactory$DuplicateJsonObjectContextCustomizer@71e5f61d, org.springframework.boot.test.mock.mockito.MockitoContextCustomizer@0], contextLoader = org.springframework.test.context.support.DelegatingSmartContextLoader, parent = null] at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:180) at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:130) at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:142) at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:98) at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:260) at org.springframework.test.context.junit.jupiter.SpringExtension.postProcessTestInstance(SpringExtension.java:163) at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197) at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179) at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1625) at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) at java.base/java.util.stream.StreamSpliterators$WrappingSpliterator.forEachRemaining(StreamSpliterators.java:310) at java.base/java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:735) at java.base/java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:734) at java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:762) at java.base/java.util.Optional.orElseGet(Optional.java:364) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'testConfig': Unsatisfied dependency expressed through field 'job': Error creating bean with name 'sshb0051' defined in jp.co.sej.ssc.sh.sshb0051.Sshb0051JobConfig: Unsatisfied dependency expressed through method 'sshb0051' parameter 3: Error creating bean with name 'sshb0051step1' defined in jp.co.sej.ssc.sh.sshb0051.Sshb0051JobConfig: Unsatisfied dependency expressed through method 'sshb0051step1' parameter 1: Error creating bean with name 'sshb0051Step1Tasklet' defined in file [D:\SY22BNEC31\新しいフォルダー (2)\shelf-batch-sshb0051-application-develop\build\bin\main\jp\co\sej\ssc\sh\sshb0051\Sshb0051Step1Tasklet.class]: null at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:788) at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:768) at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:145) at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:509) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1439) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:599) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:522) at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:337) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:335) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:975) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:971) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:625) at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:221) at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:110) at org.springframework.test.context.support.AbstractDelegatingSmartContextLoader.loadContext(AbstractDelegatingSmartContextLoader.java:212) at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:225) at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:152) ... 17 more Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'sshb0051' defined in jp.co.sej.ssc.sh.sshb0051.Sshb0051JobConfig: Unsatisfied dependency expressed through method 'sshb0051' parameter 3: Error creating bean with name 'sshb0051step1' defined in jp.co.sej.ssc.sh.sshb0051.Sshb0051JobConfig: Unsatisfied dependency expressed through method 'sshb0051step1' parameter 1: Error creating bean with name 'sshb0051Step1Tasklet' defined in file [D:\SY22BNEC31\新しいフォルダー (2)\shelf-batch-sshb0051-application-develop\build\bin\main\jp\co\sej\ssc\sh\sshb0051\Sshb0051Step1Tasklet.class]: null at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:795) at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:542) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1355) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1185) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:562) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:522) at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:337) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:335) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:254) at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1443) at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1353) at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:785) ... 35 more Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'sshb0051step1' defined in jp.co.sej.ssc.sh.sshb0051.Sshb0051JobConfig: Unsatisfied dependency expressed through method 'sshb0051step1' parameter 1: Error creating bean with name 'sshb0051Step1Tasklet' defined in file [D:\SY22BNEC31\新しいフォルダー (2)\shelf-batch-sshb0051-application-develop\build\bin\main\jp\co\sej\ssc\sh\sshb0051\Sshb0051Step1Tasklet.class]: null at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:795) at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:542) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1355) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1185) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:562) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:522) at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:337) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:335) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:254) at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1443) at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1353) at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:904) at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:782) ... 48 more Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sshb0051Step1Tasklet' defined in file [D:\SY22BNEC31\新しいフォルダー (2)\shelf-batch-sshb0051-application-develop\build\bin\main\jp\co\sej\ssc\sh\sshb0051\Sshb0051Step1Tasklet.class]: null at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:318) at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:306) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1375) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1212) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:562) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:522) at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:337) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:335) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:254) at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1443) at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1353) at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:904) at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:782) ... 62 more Caused by: java.lang.ExceptionInInitializerError at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500) at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:481) at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:208) at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:117) at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:315) ... 76 more Caused by: java.lang.NullPointerException: defaultObj at java.base/java.util.Objects.requireNonNull(Objects.java:235) at java.base/java.util.Objects.requireNonNullElse(Objects.java:290) at jp.co.sej.ssc.sh.sshb0051.Sshb0051Step1Tasklet.<clinit>(Sshb0051Step1Tasklet.java:364) ... 81 more
11-28
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值