2017-06-03 4 views
0

Ich versuche this Spring batch tutorialSpring Batch Hallo Welt

Aber ich erhalte die folgende Fehlermeldung an den jobRepository Zusammenhang zu tun.

Ich habe gelesen, dass die jobRepository ist obligatorisch beim Erstellen eines Jobs, aber ich weiß nicht, warum es nicht erstellt wird. Ich habe alle meine Abhängigkeiten wie im Tutorial geladen.

Kann mir jemand helfen, in die richtige Richtung zu zeigen? Danke im Voraus.

Jun 03, 2017 8:13:18 PM 
    org.springframework.context.support.AbstractApplicationContext 
    prepareRefresh 
    INFO: Refreshing 
    org[email protected]579bb367: 
    startup date [Sat Jun 03 20:13:18 AEST 2017]; root of context hierarchy 
    Jun 03, 2017 8:13:18 PM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions 
INFO: Loading XML bean definitions from class path resource [spring/batch/jobs/job-hello-world.xml] 
Jun 03, 2017 8:13:18 PM org.springframework.beans.factory.support.DefaultListableBeanFactory registerBeanDefinition 
INFO: Overriding bean definition for bean 'helloWorldJob': replacing [Generic bean: class [org.springframework.batch.core.configuration.xml.SimpleFlowFactoryBean]; scope=; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null] with [Generic bean: class [org.springframework.batch.core.configuration.xml.JobParserJobFactoryBean]; scope=; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null] 
Jun 03, 2017 8:13:18 PM org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons 
INFO: Pre-instantiating singletons in org.s[email protected]3532ec19: defining beans [report,itemProcessor,org.springframework.batch.core.scope.internalStepScope,org.springframework.beans.factory.config.CustomEditorConfigurer,org.springframework.batch.core.configuration.xml.CoreNamespacePostProcessor,step1,helloWorldJob,cvsFileItemReader,xmlItemWriter,reportMarshaller]; root of factory hierarchy 
Jun 03, 2017 8:13:18 PM org.springframework.oxm.jaxb.Jaxb2Marshaller createJaxbContextFromClasses 
INFO: Creating JAXBContext with classes to be bound [class com.mkyong.model.Report] 
Jun 03, 2017 8:13:18 PM org.springframework.beans.factory.support.DefaultSingletonBeanRegistry destroySingletons 
INFO: Destroying singletons in org.s[email protected]3532ec19: defining beans [report,itemProcessor,org.springframework.batch.core.scope.internalStepScope,org.springframework.beans.factory.config.CustomEditorConfigurer,org.springframework.batch.core.configuration.xml.CoreNamespacePostProcessor,step1,helloWorldJob,cvsFileItemReader,xmlItemWriter,reportMarshaller]; root of factory hierarchy 
Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'step1': Cannot resolve reference to bean 'jobRepository' while setting bean property 'jobRepository'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'jobRepository' is defined 
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:329) 
     at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:107) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1393) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1134) 
    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:608) 
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479) 
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139) 
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:93) 
    at com.mkyong.App.main(App.java:18) 
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'jobRepository' is defined 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:568) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1102) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:278) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) 
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:323) 
    ... 15 more 

Process finished with exit code 1 
+0

Als eine Randnotiz ist dieses Tutorial * sehr * datiert. Ich empfehle, den Leitfaden zu verwenden, der unter spring.io zur Verfügung gestellt wird: https://spring.io/guides/gs/batch-processing/ –

Antwort

0

Zunächst scheint das ein zu kompliziertes Tutorial für Kategorie - "Hallo Welt".

Zweitens, wenn Sie jetzt beginnen, sollten Sie keine XML-basierten Konfigurationen verwenden - Verwenden Sie auf Annotationen basierende Konfiguration, es sei denn, Sie haben zwingende Gründe dafür - finden Sie ein auf Java-Konfiguration basierendes Tutorial.

Ihre Fehler angeht, wenn Sie nach unten, dass Tutorial gehen, in context.xml, er Repositories ist die Definition,

<!-- stored job-meta in memory --> 
    <!-- 
    <bean id="jobRepository" 
     class="org.springframework.batch.core.repository.support.MapJobRepositoryFactoryBean"> 
     <property name="transactionManager" ref="transactionManager" /> 
    </bean> 
    --> 

    <!-- stored job-meta in database --> 
    <bean id="jobRepository" 
     class="org.springframework.batch.core.repository.support.JobRepositoryFactoryBean"> 
     <property name="dataSource" ref="dataSource" /> 
     <property name="transactionManager" ref="transactionManager" /> 
     <property name="databaseType" value="mysql" /> 
    </bean> 

Sie keinen Code gezeigt haben, so kann ich nicht sicher sein, wie das, was du bist fehlt.

Wenn Sie keine DB verwenden, verwenden Sie auskommentierte Bean - MapJobRepositoryFactoryBean, aber Sie müssen sicherstellen, dass einige In - Memory DB wie HSQL, H2 auf Ihrem Klassenpfad sind. Diese Abhängigkeiten sind nicht vorhanden.

Wenn Sie eine MySQL-Datenbank haben, verwenden Sie die vorhandenen Beans, wie in der context.xml- und mysql-Abhängigkeit gezeigt.