OutOfMemoryError после перехода на Spring 6/Hibernate 6/Spring Boot 3 с несколькими источниками данных, вызванное Transa ⇐ JAVA
OutOfMemoryError после перехода на Spring 6/Hibernate 6/Spring Boot 3 с несколькими источниками данных, вызванное Transa
Может кто-нибудь мне помочь, пожалуйста: я пытаюсь перенести огромный Java-проект из Hibernate 5, Spring 5 и Spring Boot 2 в Hibernate 6, Spring 6 и Spring Boot 3, но я застрял с исключением OutOfMemory, которое кажется проблема циклической зависимости, вызванная аннотацией @PostConstruct.
Вот мой класс ApplicationConfiguration (имена классов и методов были изменены, а бесполезный код для этой темы удален):
@SpringBootApplication @EnableAutoConfiguration( исключитьИмя = { "org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration" } ) @ComponentScan( ... ) @PropertySource @EnableCaching @EnableTransactionManagement @Конфигурация общественный класс ApplicationConfiguration { @Начальный @Autowired @Бин public LocalSessionFactoryBean sessionFactory(@Qualifier("dataSource") DataSource dataSource, MultiTenantConnectionProvider multiTenantConnectionProviderImpl, CurrentTenantIdentifierResolver currentTenantIdentifierResolverImpl) { // Некоторый код: создание LocalSessionFactoryBean для основного источника данных } @Бин @Autowired @Начальный public HibernateTransactionManager transactionManager(@Qualifier("sessionFactory") SessionFactory sessionFactory) { // Некоторый код: создание основного менеджера транзакций } }
Вот класс MyCustomDAO
общественный класс MyCustomDAO { @Autowired (обязательно = ложь) @Qualifier("Менеджер транзакций") @Ленивый защищенный менеджер транзакций HibernateTransactionManager; @Транзакционный общественный недействительный myCustomMethod() { // Некоторый транзакционный код } }
И последнее, но не менее важное: класс MyCustomService с методом @PostConstruct, который генерирует исключение:
@Услуга общественный класс MyCustomService { @Autowired частный MyCustomDAO myCustomDAO; @PostConstruct общественный недействительный updateStatus () { // поскольку 'myCustomMethod' является транзакционным, ему нужна транзакция // затем выбрасываем исключение OutOfMemoryException myCustomDAO.myCustomMethod(); } }
Я столкнулся со следующей ошибкой:
Ошибка создания bean-компонента с именем myCustomService: не удалось вызвать метод init (начало сообщения) и java.lang.OutOfMemoryError: пространство кучи Java (конец сообщения)
04.12.23 13:28:01 demolocal-i10_demo [main] ОШИБКА tiSpringBootApplicationLauncher - Ошибка создания bean-компонента с именем myCustomService: не удалось вызвать метод init org.springframework.beans.factory.BeanCreationException: ошибка при создании bean-компонента с именем myCustomService: не удалось вызвать метод init в org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:195) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:420) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1754) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:599) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:521) в org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326) в org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) в org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324) в org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) в org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:961) в org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:917) в org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:584) в org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) в org.springframework.boot.SpringApplication.refresh(SpringApplication.java:732) в org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:434) в org.springframework.boot.SpringApplication.run(SpringApplication.java:310) в stackoverflow.example.SpringBootApplicationLauncher.initialize(SpringBootApplicationLauncher.java:335) в stackoverflow.example.SpringBootApplicationLauncher.main(SpringBootApplicationLauncher.java:152) Вызвано: org.springframework.beans.factory.UnsatisfiedDependencyException: ошибка создания bean-компонента с именем «transactionManager», определенным в stackoverflow.example.config.ApplicationConfiguration: неудовлетворенная зависимость, выраженная через параметр метода «transactionManager» 0: Ошибка создания bean-компонента с именем «sessionFactory», определенным в stackoverflow.example.config.ApplicationConfiguration: пространство кучи Java в org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:798) в org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:548) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1324) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1161) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:561) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:521) в org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326) в org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) в org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324) в org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:225) в org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveNamedBean(DefaultListableBeanFactory.java:1298) в org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveNamedBean(DefaultListableBeanFactory.java:1282) в org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveBean(DefaultListableBeanFactory.java:483) в org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:338) в org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:331) в org.springframework.transaction.interceptor.TransactionAspectSupport.determineTransactionManager(TransactionAspectSupport.java:505) в org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:344) в org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) в org.springframework.aop.framework.ReflectiveMethodInvocate.proceed(ReflectiveMethodInvocate.java:184) в org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocate.proceed(CglibAopProxy.java:750) в org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:702) в stackoverflow.example.society.MyCustomDAO$$SpringCGLIB$$1.myCustomMethod() в stackoverflow.example.accountinggeneral.MyCustomService.lambda$0(MyCustomService.java:153) в java.base/java.util.ArrayList.forEach(ArrayList.java:1511) в java.base/java.util.Collections$UnmodifyingCollection.forEach(Collections.java:1092) в stackoverflow.example.accountinggeneral.MyCustomService.updateStatus(MyCustomService.java:150) в java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод) в java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) в java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) в java.base/java.lang.reflect.Method.invoke(Method.java:568) в org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:424) в org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:368) в org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:192) ... еще 17 Вызвано: org.springframework.beans.factory.BeanCreationException: ошибка создания bean-компонента с именем «sessionFactory», определенным в stackoverflow.example.config.ApplicationConfiguration: пространство кучи Java в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1762) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:599) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:521) в org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326) в org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) в org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324) в org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) в org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:254) в org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1405) в org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1325) в org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:885) в org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:789) ... еще 49 Вызвано: java.lang.OutOfMemoryError: пространство кучи Java в java.base/jdk.internal.misc.Unsafe.allocateUninitializedArray0(Unsafe.java:1382) в java.base/jdk.internal.misc.Unsafe.allocateUninitializedArray(Unsafe.java:1375) в java.base/java.lang.StringConcatHelper.newArray(StringConcatHelper.java:494) в java.base/java.lang.StringConcatHelper.simpleConcat(StringConcatHelper.java:421) в java.base/java.lang.invoke.DirectMethodHandle$Holder.invokeStatic(DirectMethodHandle$Holder) в java.base/java.lang.invoke.LambdaForm$MH/0x0000000800c04400.invoke(LambdaForm$MH) в java.base/java.lang.invoke.Invokers$Holder.linkToTargetMethod(Invokers$Holder) в org.hibernate.sql.ast.SqlTreePrinter.logSqlAst(SqlTreePrinter.java:46) в org.hibernate.sql.ast.spi.AbstractSqlAstTranslator.translateSelect(AbstractSqlAstTranslator.java:828) в org.hibernate.sql.ast.spi.AbstractSqlAstTranslator.translate(AbstractSqlAstTranslator.java:780) в org.hibernate.loader.ast.internal.SingleIdLoadPlan.(SingleIdLoadPlan.java:65) в org.hibernate.loader.ast.internal.SingleIdEntityLoaderStandardImpl.createLoadPlan(SingleIdEntityLoaderStandardImpl.java:195) в org.hibernate.loader.ast.internal.SingleIdEntityLoaderStandardImpl.prepare(SingleIdEntityLoaderStandardImpl.java:54) в org.hibernate.persister.entity.AbstractEntityPersister.prepareLoader(AbstractEntityPersister.java:3332) в org.hibernate.persister.entity.AbstractEntityPersister.postInstantiate(AbstractEntityPersister.java:3326) в org.hibernate.metamodel.model.domain.internal.MappingMetamodelImpl.finishInitialization (MappingMetamodelImpl.java:204) в org.hibernate.internal.SessionFactoryImpl.initializeMappingModel (SessionFactoryImpl.java:319) в org.hibernate.internal.SessionFactoryImpl.(SessionFactoryImpl.java:269) в org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:431) в org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:894) в org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:913) в org.springframework.orm.hibernate5.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:612) в org.springframework.orm.hibernate5.LocalSessionFactoryBean.afterPropertiesSet(LocalSessionFactoryBean.java:596) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1808) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1758) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:599) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:521) в org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326) в org.springframework.beans.factory.support.AbstractBeanFactory$$Lambda$461/0x0000000800f44b08.getObject (неизвестный источник) в org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) в org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324) в org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) 04.12.23 13:28:01 demolocal-i10_demo [main] ОШИБКА tiSpringBootApplicationLauncher - Ошибка создания bean-компонента с именем myCustomService: не удалось вызвать метод init org.springframework.beans.factory.BeanCreationException: ошибка создания bean-компонента с именем «myCustomService»: Вызов метода init не удался в org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:195) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:420) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1754) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:599) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:521) в org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326) в org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) в org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324) в org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) в org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:961) в org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:917) в org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:584) в org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) в org.springframework.boot.SpringApplication.refresh(SpringApplication.java:732) в org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:434) в org.springframework.boot.SpringApplication.run(SpringApplication.java:310) в stackoverflow.example.SpringBootApplicationLauncher.initialize(SpringBootApplicationLauncher.java:335) в stackoverflow.example.SpringBootApplicationLauncher.main(SpringBootApplicationLauncher.java:152) Вызвано: org.springframework.beans.factory.UnsatisfiedDependencyException: ошибка создания bean-компонента с именем "transactionManager", определенным в stackoverflow.example.config.ApplicationConfiguration: неудовлетворительная зависимость, выраженная через параметр метода "transactionManager" 0: ошибка создания bean-компонента с именем "sessionFactory". определено в stackoverflow.example.config.ApplicationConfiguration: Куча Java в org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:798) в org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:548) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1324) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1161) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:561) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:521) в org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326) в org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) в org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324) в org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:225) в org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveNamedBean(DefaultListableBeanFactory.java:1298) в org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveNamedBean(DefaultListableBeanFactory.java:1282) в org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveBean(DefaultListableBeanFactory.java:483) в org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:338) в org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:331) в org.springframework.transaction.interceptor.TransactionAspectSupport.determineTransactionManager(TransactionAspectSupport.java:505) в org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:344) в org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) в org.springframework.aop.framework.ReflectiveMethodInvocate.proceed(ReflectiveMethodInvocate.java:184) в org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocate.proceed(CglibAopProxy.java:750) в org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:702) в stackoverflow.example.society.MyCustomDAO$$SpringCGLIB$$1.myCustomMethod() в stackoverflow.example.accountinggeneral.MyCustomService.lambda$0(MyCustomService.java:153) в java.base/java.util.ArrayList.forEach(ArrayList.java:1511) в java.base/java.util.Collections$UnmodifyingCollection.forEach(Collections.java:1092) в stackoverflow.example.accountinggeneral.MyCustomService.updateStatus(MyCustomService.java:150) в java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод) в java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) в java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) в java.base/java.lang.reflect.Method.invoke(Method.java:568) в org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:424) в org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:368) в org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:192) ... еще 17 Вызвано: org.springframework.beans.factory.BeanCreationException: ошибка создания bean-компонента с именем «sessionFactory», определенным в stackoverflow.example.config.ApplicationConfiguration: пространство кучи Java в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1762) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:599) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:521) в org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326) в org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) в org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324) в org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) в org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:254) в org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1405) в org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1325) в org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:885) в org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:789) ... еще 49 Вызвано: java.lang.OutOfMemoryError: пространство кучи Java в java.base/jdk.internal.misc.Unsafe.allocateUninitializedArray0(Unsafe.java:1382) в java.base/jdk.internal.misc.Unsafe.allocateUninitializedArray(Unsafe.java:1375) в java.base/java.lang.StringConcatHelper.newArray(StringConcatHelper.java:494) в java.base/java.lang.StringConcatHelper.simpleConcat(StringConcatHelper.java:421) в java.base/java.lang.invoke.DirectMethodHandle$Holder.invokeStatic(DirectMethodHandle$Holder) в java.base/java.lang.invoke.LambdaForm$MH/0x0000000800c04400.invoke(LambdaForm$MH) в java.base/java.lang.invoke.Invokers$Holder.linkToTargetMethod(Invokers$Holder) в org.hibernate.sql.ast.SqlTreePrinter.logSqlAst(SqlTreePrinter.java:46) в org.hibernate.sql.ast.spi.AbstractSqlAstTranslator.translateSelect(AbstractSqlAstTranslator.java:828) в org.hibernate.sql.ast.spi.AbstractSqlAstTranslator.translate(AbstractSqlAstTranslator.java:780) в org.hibernate.loader.ast.internal.SingleIdLoadPlan.(SingleIdLoadPlan.java:65) в org.hibernate.loader.ast.internal.SingleIdEntityLoaderStandardImpl.createLoadPlan(SingleIdEntityLoaderStandardImpl.java:195) в org.hibernate.loader.ast.internal.SingleIdEntityLoaderStandardImpl.prepare(SingleIdEntityLoaderStandardImpl.java:54) в org.hibernate.persister.entity.AbstractEntityPersister.prepareLoader(AbstractEntityPersister.java:3332) в org.hibernate.persister.entity.AbstractEntityPersister.postInstantiate(AbstractEntityPersister.java:3326) в org.hibernate.metamodel.model.domain.internal.MappingMetamodelImpl.finishInitialization (MappingMetamodelImpl.java:204) в org.hibernate.internal.SessionFactoryImpl.initializeMappingModel (SessionFactoryImpl.java:319) в org.hibernate.internal.SessionFactoryImpl.(SessionFactoryImpl.java:269) в org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:431) в org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:894) в org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:913) в org.springframework.orm.hibernate5.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:612) в org.springframework.orm.hibernate5.LocalSessionFactoryBean.afterPropertiesSet(LocalSessionFactoryBean.java:596) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1808) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1758) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:599) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:521) в org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326) в org.springframework.beans.factory.support.AbstractBeanFactory$$Lambda$461/0x0000000800f44b08.getObject (неизвестный источник) в org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) в org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324) в org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200)
Обратите внимание, что если я поставлю SpringApplication.setLazyInitialization(true), это сработает, но ни один из моих веб-сервисов не будет доступен. Но метод @PostConstruct не вызывается до тех пор, пока компонент не будет создан, поэтому я думаю, что это проблема циклической зависимости.
Может кто-нибудь мне помочь, пожалуйста: я пытаюсь перенести огромный Java-проект из Hibernate 5, Spring 5 и Spring Boot 2 в Hibernate 6, Spring 6 и Spring Boot 3, но я застрял с исключением OutOfMemory, которое кажется проблема циклической зависимости, вызванная аннотацией @PostConstruct.
Вот мой класс ApplicationConfiguration (имена классов и методов были изменены, а бесполезный код для этой темы удален):
@SpringBootApplication @EnableAutoConfiguration( исключитьИмя = { "org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration" } ) @ComponentScan( ... ) @PropertySource @EnableCaching @EnableTransactionManagement @Конфигурация общественный класс ApplicationConfiguration { @Начальный @Autowired @Бин public LocalSessionFactoryBean sessionFactory(@Qualifier("dataSource") DataSource dataSource, MultiTenantConnectionProvider multiTenantConnectionProviderImpl, CurrentTenantIdentifierResolver currentTenantIdentifierResolverImpl) { // Некоторый код: создание LocalSessionFactoryBean для основного источника данных } @Бин @Autowired @Начальный public HibernateTransactionManager transactionManager(@Qualifier("sessionFactory") SessionFactory sessionFactory) { // Некоторый код: создание основного менеджера транзакций } }
Вот класс MyCustomDAO
общественный класс MyCustomDAO { @Autowired (обязательно = ложь) @Qualifier("Менеджер транзакций") @Ленивый защищенный менеджер транзакций HibernateTransactionManager; @Транзакционный общественный недействительный myCustomMethod() { // Некоторый транзакционный код } }
И последнее, но не менее важное: класс MyCustomService с методом @PostConstruct, который генерирует исключение:
@Услуга общественный класс MyCustomService { @Autowired частный MyCustomDAO myCustomDAO; @PostConstruct общественный недействительный updateStatus () { // поскольку 'myCustomMethod' является транзакционным, ему нужна транзакция // затем выбрасываем исключение OutOfMemoryException myCustomDAO.myCustomMethod(); } }
Я столкнулся со следующей ошибкой:
Ошибка создания bean-компонента с именем myCustomService: не удалось вызвать метод init (начало сообщения) и java.lang.OutOfMemoryError: пространство кучи Java (конец сообщения)
04.12.23 13:28:01 demolocal-i10_demo [main] ОШИБКА tiSpringBootApplicationLauncher - Ошибка создания bean-компонента с именем myCustomService: не удалось вызвать метод init org.springframework.beans.factory.BeanCreationException: ошибка при создании bean-компонента с именем myCustomService: не удалось вызвать метод init в org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:195) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:420) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1754) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:599) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:521) в org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326) в org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) в org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324) в org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) в org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:961) в org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:917) в org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:584) в org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) в org.springframework.boot.SpringApplication.refresh(SpringApplication.java:732) в org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:434) в org.springframework.boot.SpringApplication.run(SpringApplication.java:310) в stackoverflow.example.SpringBootApplicationLauncher.initialize(SpringBootApplicationLauncher.java:335) в stackoverflow.example.SpringBootApplicationLauncher.main(SpringBootApplicationLauncher.java:152) Вызвано: org.springframework.beans.factory.UnsatisfiedDependencyException: ошибка создания bean-компонента с именем «transactionManager», определенным в stackoverflow.example.config.ApplicationConfiguration: неудовлетворенная зависимость, выраженная через параметр метода «transactionManager» 0: Ошибка создания bean-компонента с именем «sessionFactory», определенным в stackoverflow.example.config.ApplicationConfiguration: пространство кучи Java в org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:798) в org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:548) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1324) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1161) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:561) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:521) в org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326) в org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) в org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324) в org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:225) в org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveNamedBean(DefaultListableBeanFactory.java:1298) в org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveNamedBean(DefaultListableBeanFactory.java:1282) в org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveBean(DefaultListableBeanFactory.java:483) в org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:338) в org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:331) в org.springframework.transaction.interceptor.TransactionAspectSupport.determineTransactionManager(TransactionAspectSupport.java:505) в org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:344) в org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) в org.springframework.aop.framework.ReflectiveMethodInvocate.proceed(ReflectiveMethodInvocate.java:184) в org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocate.proceed(CglibAopProxy.java:750) в org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:702) в stackoverflow.example.society.MyCustomDAO$$SpringCGLIB$$1.myCustomMethod() в stackoverflow.example.accountinggeneral.MyCustomService.lambda$0(MyCustomService.java:153) в java.base/java.util.ArrayList.forEach(ArrayList.java:1511) в java.base/java.util.Collections$UnmodifyingCollection.forEach(Collections.java:1092) в stackoverflow.example.accountinggeneral.MyCustomService.updateStatus(MyCustomService.java:150) в java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод) в java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) в java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) в java.base/java.lang.reflect.Method.invoke(Method.java:568) в org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:424) в org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:368) в org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:192) ... еще 17 Вызвано: org.springframework.beans.factory.BeanCreationException: ошибка создания bean-компонента с именем «sessionFactory», определенным в stackoverflow.example.config.ApplicationConfiguration: пространство кучи Java в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1762) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:599) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:521) в org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326) в org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) в org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324) в org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) в org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:254) в org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1405) в org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1325) в org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:885) в org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:789) ... еще 49 Вызвано: java.lang.OutOfMemoryError: пространство кучи Java в java.base/jdk.internal.misc.Unsafe.allocateUninitializedArray0(Unsafe.java:1382) в java.base/jdk.internal.misc.Unsafe.allocateUninitializedArray(Unsafe.java:1375) в java.base/java.lang.StringConcatHelper.newArray(StringConcatHelper.java:494) в java.base/java.lang.StringConcatHelper.simpleConcat(StringConcatHelper.java:421) в java.base/java.lang.invoke.DirectMethodHandle$Holder.invokeStatic(DirectMethodHandle$Holder) в java.base/java.lang.invoke.LambdaForm$MH/0x0000000800c04400.invoke(LambdaForm$MH) в java.base/java.lang.invoke.Invokers$Holder.linkToTargetMethod(Invokers$Holder) в org.hibernate.sql.ast.SqlTreePrinter.logSqlAst(SqlTreePrinter.java:46) в org.hibernate.sql.ast.spi.AbstractSqlAstTranslator.translateSelect(AbstractSqlAstTranslator.java:828) в org.hibernate.sql.ast.spi.AbstractSqlAstTranslator.translate(AbstractSqlAstTranslator.java:780) в org.hibernate.loader.ast.internal.SingleIdLoadPlan.(SingleIdLoadPlan.java:65) в org.hibernate.loader.ast.internal.SingleIdEntityLoaderStandardImpl.createLoadPlan(SingleIdEntityLoaderStandardImpl.java:195) в org.hibernate.loader.ast.internal.SingleIdEntityLoaderStandardImpl.prepare(SingleIdEntityLoaderStandardImpl.java:54) в org.hibernate.persister.entity.AbstractEntityPersister.prepareLoader(AbstractEntityPersister.java:3332) в org.hibernate.persister.entity.AbstractEntityPersister.postInstantiate(AbstractEntityPersister.java:3326) в org.hibernate.metamodel.model.domain.internal.MappingMetamodelImpl.finishInitialization (MappingMetamodelImpl.java:204) в org.hibernate.internal.SessionFactoryImpl.initializeMappingModel (SessionFactoryImpl.java:319) в org.hibernate.internal.SessionFactoryImpl.(SessionFactoryImpl.java:269) в org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:431) в org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:894) в org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:913) в org.springframework.orm.hibernate5.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:612) в org.springframework.orm.hibernate5.LocalSessionFactoryBean.afterPropertiesSet(LocalSessionFactoryBean.java:596) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1808) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1758) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:599) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:521) в org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326) в org.springframework.beans.factory.support.AbstractBeanFactory$$Lambda$461/0x0000000800f44b08.getObject (неизвестный источник) в org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) в org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324) в org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) 04.12.23 13:28:01 demolocal-i10_demo [main] ОШИБКА tiSpringBootApplicationLauncher - Ошибка создания bean-компонента с именем myCustomService: не удалось вызвать метод init org.springframework.beans.factory.BeanCreationException: ошибка создания bean-компонента с именем «myCustomService»: Вызов метода init не удался в org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:195) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:420) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1754) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:599) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:521) в org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326) в org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) в org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324) в org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) в org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:961) в org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:917) в org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:584) в org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) в org.springframework.boot.SpringApplication.refresh(SpringApplication.java:732) в org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:434) в org.springframework.boot.SpringApplication.run(SpringApplication.java:310) в stackoverflow.example.SpringBootApplicationLauncher.initialize(SpringBootApplicationLauncher.java:335) в stackoverflow.example.SpringBootApplicationLauncher.main(SpringBootApplicationLauncher.java:152) Вызвано: org.springframework.beans.factory.UnsatisfiedDependencyException: ошибка создания bean-компонента с именем "transactionManager", определенным в stackoverflow.example.config.ApplicationConfiguration: неудовлетворительная зависимость, выраженная через параметр метода "transactionManager" 0: ошибка создания bean-компонента с именем "sessionFactory". определено в stackoverflow.example.config.ApplicationConfiguration: Куча Java в org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:798) в org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:548) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1324) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1161) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:561) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:521) в org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326) в org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) в org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324) в org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:225) в org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveNamedBean(DefaultListableBeanFactory.java:1298) в org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveNamedBean(DefaultListableBeanFactory.java:1282) в org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveBean(DefaultListableBeanFactory.java:483) в org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:338) в org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:331) в org.springframework.transaction.interceptor.TransactionAspectSupport.determineTransactionManager(TransactionAspectSupport.java:505) в org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:344) в org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) в org.springframework.aop.framework.ReflectiveMethodInvocate.proceed(ReflectiveMethodInvocate.java:184) в org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocate.proceed(CglibAopProxy.java:750) в org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:702) в stackoverflow.example.society.MyCustomDAO$$SpringCGLIB$$1.myCustomMethod() в stackoverflow.example.accountinggeneral.MyCustomService.lambda$0(MyCustomService.java:153) в java.base/java.util.ArrayList.forEach(ArrayList.java:1511) в java.base/java.util.Collections$UnmodifyingCollection.forEach(Collections.java:1092) в stackoverflow.example.accountinggeneral.MyCustomService.updateStatus(MyCustomService.java:150) в java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод) в java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) в java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) в java.base/java.lang.reflect.Method.invoke(Method.java:568) в org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:424) в org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:368) в org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:192) ... еще 17 Вызвано: org.springframework.beans.factory.BeanCreationException: ошибка создания bean-компонента с именем «sessionFactory», определенным в stackoverflow.example.config.ApplicationConfiguration: пространство кучи Java в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1762) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:599) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:521) в org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326) в org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) в org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324) в org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) в org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:254) в org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1405) в org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1325) в org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:885) в org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:789) ... еще 49 Вызвано: java.lang.OutOfMemoryError: пространство кучи Java в java.base/jdk.internal.misc.Unsafe.allocateUninitializedArray0(Unsafe.java:1382) в java.base/jdk.internal.misc.Unsafe.allocateUninitializedArray(Unsafe.java:1375) в java.base/java.lang.StringConcatHelper.newArray(StringConcatHelper.java:494) в java.base/java.lang.StringConcatHelper.simpleConcat(StringConcatHelper.java:421) в java.base/java.lang.invoke.DirectMethodHandle$Holder.invokeStatic(DirectMethodHandle$Holder) в java.base/java.lang.invoke.LambdaForm$MH/0x0000000800c04400.invoke(LambdaForm$MH) в java.base/java.lang.invoke.Invokers$Holder.linkToTargetMethod(Invokers$Holder) в org.hibernate.sql.ast.SqlTreePrinter.logSqlAst(SqlTreePrinter.java:46) в org.hibernate.sql.ast.spi.AbstractSqlAstTranslator.translateSelect(AbstractSqlAstTranslator.java:828) в org.hibernate.sql.ast.spi.AbstractSqlAstTranslator.translate(AbstractSqlAstTranslator.java:780) в org.hibernate.loader.ast.internal.SingleIdLoadPlan.(SingleIdLoadPlan.java:65) в org.hibernate.loader.ast.internal.SingleIdEntityLoaderStandardImpl.createLoadPlan(SingleIdEntityLoaderStandardImpl.java:195) в org.hibernate.loader.ast.internal.SingleIdEntityLoaderStandardImpl.prepare(SingleIdEntityLoaderStandardImpl.java:54) в org.hibernate.persister.entity.AbstractEntityPersister.prepareLoader(AbstractEntityPersister.java:3332) в org.hibernate.persister.entity.AbstractEntityPersister.postInstantiate(AbstractEntityPersister.java:3326) в org.hibernate.metamodel.model.domain.internal.MappingMetamodelImpl.finishInitialization (MappingMetamodelImpl.java:204) в org.hibernate.internal.SessionFactoryImpl.initializeMappingModel (SessionFactoryImpl.java:319) в org.hibernate.internal.SessionFactoryImpl.(SessionFactoryImpl.java:269) в org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:431) в org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:894) в org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:913) в org.springframework.orm.hibernate5.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:612) в org.springframework.orm.hibernate5.LocalSessionFactoryBean.afterPropertiesSet(LocalSessionFactoryBean.java:596) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1808) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1758) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:599) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:521) в org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326) в org.springframework.beans.factory.support.AbstractBeanFactory$$Lambda$461/0x0000000800f44b08.getObject (неизвестный источник) в org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) в org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324) в org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200)
Обратите внимание, что если я поставлю SpringApplication.setLazyInitialization(true), это сработает, но ни один из моих веб-сервисов не будет доступен. Но метод @PostConstruct не вызывается до тех пор, пока компонент не будет создан, поэтому я думаю, что это проблема циклической зависимости.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Я получаю «OutofmemoryError», пытаясь бросить OutofmemoryError; в Android нет стека »
Anonymous » » в форуме Android - 0 Ответы
- 17 Просмотры
-
Последнее сообщение Anonymous
-