при запуске приложения отображается следующая ошибка:
org.springframework.beans.factory.BeanCreationException: Ошибка при создании компонента с именем 'pamdaBatchConfigurer': сбой вызова метода init; вложенное исключение - org.springframework.beans.factory.BeanCreationException: ошибка при создании компонента с именем 'getJobRepository', определенным в com.orange.pamda.config.PamdaBatchConfigurer: создание экземпляра компонента с помощью метода фабрики не выполнено; вложенным исключением является org.springframework.beans.BeanInstantiationException: не удалось создать экземпляр [org.springframework.batch.core.repository.JobRepository]: круговая ссылка, включающая в себя содержащий bean-компонент «pamdaBatchConfigurer» - рассмотрите возможность объявления метода фабрики как статического c для независимости содержащий его экземпляр. Фабричный метод getJobRepository вызвал исключение; Вложенное исключение: java .lang.IllegalArgumentException: DatabaseType не найден для имени продукта: [MariaDB] в org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialSource_Exchange.Exchange.Exchange. .factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization (AbstractAutowireCapableBeanFactory java:. 409) при org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean (AbstractAutowireCapableBeanFactory java:. 1620) в org.springframework.beans.factory.support (. AbstractAutowireCapableBeanFactory java: 555) .AbstractAutowireCapableBeanFactory.doCreateBean в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean (AbstractAutowireCapableBeanFactory java:. 483) в org.springframework.beans.factory.support.AbstractBeanFactory $ 1. getObject (AbstractBeanFactory. java: 306) в org.springframewo rk.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton (DefaultSingletonBeanRegistry. java: 230) в org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean (AbstractBeanFactory. 302. factory.support.AbstractBeanFactory.getBean (AbstractBeanFactory. java: 197) в org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons (DefaultListableBeanFactory. *. finishBeanFactoryInitialization (AbstractApplicationContext. java: 867) по адресу org.springframework.context.support.AbstractApplicationContext.refre sh (AbstractApplicationContext. java: 543) по адресу org.springframework.wextAe.contete.text 1026 *: 443) в org.springframework.web.context.ContextLoader.initWebApplicationContext (ContextLoader. java: 325) в org.springframework.web.context.ContextLoaderListener.contextInitializ ed (ContextLoaderListener. java: 107) в орг. apache .catalina.core.StandardContext.listenerStart (StandardContext. java: 4685) в орг. apache .catalina.core.StandardContext.startInternal (StandardContext. java: 5146) в орг. apache .catalina.util.LifecycleBase.start (LifecycleBase. java: 183) в орг. apache .catalina.core.ContainerBase $ StartChild.call (ContainerBase. * 1036) *: 1384) в орг. apache .catalina.core.ContainerBase $ StartChild.call (ContainerBase. java: 1374) в java .util.concurrent.FutureTask.run (FutureTask. java: 266) в орг. apache .tomcat.util.threads.InlineExecutorService.execute (InlineExecutorService. java: 75) в java .util.concurrent.AbstractExecutorService.submit (AbstractExecutorService. java: 134) в орг. 1045 * .catalina.core.ContainerBase.startInternal (ContainerBase. java: 909) в орг. apache .catalina.core.StandardHost.startInternal (StandardHost. java: 841) в орг. apache .catalina .util.LifecycleBase.start (LifecycleBase. java: 183) на орг. apache .catalina.core. ContainerBase $ StartChild.call (ContainerBase. java: 1384) в орг. apache .catalina.core.ContainerBase $ StartChild.call (ContainerBase. java: 1374) в java .util.concurrent.FutureTask. выполнить (FutureTask. java: 266) в орг. apache .tomcat.util.threads.InlineExecutorService.execute (InlineExecutorService. java: 75) в java .util.concurrent.AbstractExecutorService.submit (AbstractExecutorS). java: 134) в орг. apache .catalina.core.ContainerBase.startInternal (ContainerBase. java: 909) в орг. apache .catalina.core.StandardEngine.startInternal (StandardEngine. java: 262) в орг. apache .catalina.util.LifecycleBase.start (LifecycleBase. java: 183) в орг. apache .catalina.core.StandardService.startInternal (StandardService. java: 421) в орг. . apache .catalina.util.LifecycleBase.start (LifecycleBase. java: 183) в орг. apache .catalina.core.StandardServer.startInternal (StandardServer. java: 930) в орг. apache .catalina.util.LifecycleBase.start (LifecycleBase. java: 183) в орг. apache .catalina.startup.Catalina.start ( Каталина. java: 633) в sun.reflect.NativeMethodAccessorImpl.invoke0 (нативный метод) в sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl. java: 62) в sun.reflectОбновление *: 43) в java .lang.reflect.Mehod.invoke (Метод. java: 498) в орг. apache .catalina.startup. Bootstrap .start (Bootstrap. java: 343) at org. apache .catalina.startup. Bootstrap .main (Bootstrap. java: 474)
, вот мой файл "pamdabatchconfigurer. java":
package com.orange.pamda.config;
import java.util.Date;
import java.util.Set;
import javax.annotation.PostConstruct;
import javax.sql.DataSource;
import org.springframework.batch.core.ExitStatus;
import org.springframework.batch.core.JobExecution;
import org.springframework.batch.core.configuration.annotation.BatchConfigurer;
import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing;
import org.springframework.batch.core.configuration.annotation.StepBuilderFactory;
import org.springframework.batch.core.explore.JobExplorer;
import org.springframework.batch.core.explore.support.JobExplorerFactoryBean;
import org.springframework.batch.core.launch.JobLauncher;
import org.springframework.batch.core.launch.support.SimpleJobLauncher;
import org.springframework.batch.core.repository.JobRepository;
import org.springframework.batch.core.repository.support.JobRepositoryFactoryBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.context.annotation.Primary;
import org.springframework.context.annotation.PropertySource;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.annotation.Transactional;
import com.orange.pamda.config.batch.listener.SendFileAfterExportListener;
import com.orange.pamda.worker.config.CatalogueExporterJobConfiguration;
import com.orange.pamda.worker.config.CatalogueImporterJobConfiguration;
import com.orange.pamda.worker.config.CommonJobConfiguration;
import com.orange.pamda.worker.config.DataExporterJobConfiguration;
import com.orange.pamda.worker.config.HierarchyValidatorJobConfiguration;
import com.orange.pamda.worker.config.JobBuilderFactory;
import com.orange.pamda.worker.config.KoalaExporterJobConfiguration;
import com.orange.pamda.worker.config.MappingExporterJobConfiguration;
import com.orange.pamda.worker.config.MappingImporterJobConfiguration;
import com.orange.pamda.worker.config.OrphanExporterJobConfiguration;
import com.orange.pamda.worker.config.ReleaseJobConfiguration;
import com.orange.pamda.worker.config.SummaryExporterJobConfiguration;
@Configuration
@EnableBatchProcessing(modular = true)
@Import({ CommonJobConfiguration.class, CatalogueExporterJobConfiguration.class,
CatalogueImporterJobConfiguration.class, DataExporterJobConfiguration.class,
HierarchyValidatorJobConfiguration.class, KoalaExporterJobConfiguration.class,
MappingExporterJobConfiguration.class, MappingImporterJobConfiguration.class,
OrphanExporterJobConfiguration.class, ReleaseJobConfiguration.class, SummaryExporterJobConfiguration.class })
public class PamdaBatchConfigurer implements BatchConfigurer {
@Autowired
private PlatformTransactionManager transactionManager;
@Autowired
private DataSource dataSource;
@Override
@Bean
public JobRepository getJobRepository() throws Exception {
JobRepositoryFactoryBean jobRepositoryFactoryBean = new JobRepositoryFactoryBean();
jobRepositoryFactoryBean.setDataSource(dataSource);
jobRepositoryFactoryBean.setTransactionManager(transactionManager);
jobRepositoryFactoryBean.setIsolationLevelForCreate("ISOLATION_DEFAULT");
jobRepositoryFactoryBean.afterPropertiesSet();
return jobRepositoryFactoryBean.getObject();
}
@Override
public PlatformTransactionManager getTransactionManager() throws Exception {
return transactionManager;
}
@Override
@Bean
public JobLauncher getJobLauncher() throws Exception {
SimpleJobLauncher jobLauncher = new SimpleJobLauncher();
jobLauncher.setJobRepository(getJobRepository());
// jobLauncher.setTaskExecutor(getTaskExecutor());
jobLauncher.afterPropertiesSet();
return jobLauncher;
}
@Override
@Bean
public JobExplorer getJobExplorer() throws Exception {
JobExplorerFactoryBean jobExplorerFactoryBean = new JobExplorerFactoryBean();
jobExplorerFactoryBean.setDataSource(dataSource);
jobExplorerFactoryBean.afterPropertiesSet();
return jobExplorerFactoryBean.getObject();
}
// @Bean
// public TaskExecutor getTaskExecutor() {
// SimpleAsyncTaskExecutor simpleAsyncTaskExecutor = new
// SimpleAsyncTaskExecutor();
// simpleAsyncTaskExecutor.setConcurrencyLimit(1000); // no throttle
// return simpleAsyncTaskExecutor;
// }
@Bean
public JobBuilderFactory getJobBuilderFactory() throws Exception {
return new JobBuilderFactory(getJobRepository(), sendFileAfterExportListener());
}
@Bean
public StepBuilderFactory getStepBuilderFactory() throws Exception {
return new StepBuilderFactory(getJobRepository(), transactionManager);
}
@Bean
public SendFileAfterExportListener sendFileAfterExportListener() {
return new SendFileAfterExportListener();
}
@PostConstruct
@Transactional
public void init() throws Exception {
JobExplorer jobExplorer = getJobExplorer();
JobRepository jobRepository = getJobRepository();
for (String jobName : jobExplorer.getJobNames()) {
Set<JobExecution> runningJobExecutions = jobExplorer.findRunningJobExecutions(jobName);
for (JobExecution runningJobExecution : runningJobExecutions) {
runningJobExecution.setExitStatus(ExitStatus.UNKNOWN);
runningJobExecution.setEndTime(new Date());
jobRepository.update(runningJobExecution);
}
}
}
}
Я действительно не знаю, откуда эта ошибка, может кто-нибудь помочь мне, пожалуйста?