Spring Batch – MongoDB到XML – 引起:java.lang.IllegalStateException:需要将输入转换为的类型

我正在开发Spring Batch - MongoDB to XML例子。 在这个例子中,当我运行main方法时,我看到下面的错误是cominng。 请指导以下错误。 我试图在网上找到解决方案,但我还没有在网上找到任何有用的东西。

 Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'step1': Cannot resolve reference to bean 'mongodbItemReader' while setting bean property 'itemReader'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mongodbItemReader' defined in class path resource [job-report.xml]: Invocation of init method failed; nested exception is java.lang.IllegalStateException: A type to convert the input into is required. at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:359) at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:108) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1492) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1237) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:552) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:740) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:760) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:482) at org.springframework.context.support.ClassPathXmlApplicationContext.(ClassPathXmlApplicationContext.java:139) at org.springframework.context.support.ClassPathXmlApplicationContext.(ClassPathXmlApplicationContext.java:93) at com.mkyong.App.main(App.java:15) Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mongodbItemReader' defined in class path resource [job-report.xml]: Invocation of init method failed; nested exception is java.lang.IllegalStateException: A type to convert the input into is required. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1589) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:554) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:351) ... 15 more Caused by: java.lang.IllegalStateException: A type to convert the input into is required. at org.springframework.util.Assert.state(Assert.java:392) at org.springframework.batch.item.data.MongoItemReader.afterPropertiesSet(MongoItemReader.java:200) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1648) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1585) ... 22 more 

database.xml

         

的context.xml

           

作业report.xml将

                      com.mkyong.Report    <!--             -->   

Repoer.java

 @XmlRootElement(name = "record") public class Report { private int id; private Date date; private long impression; private int clicks; private BigDecimal earning; @XmlAttribute(name = "id") public int getId() { return id; } public void setId(int id) { this.id = id; } @XmlElement(name = "date") public Date getDate() { return date; } public void setDate(Date date) { this.date = date; } @XmlElement(name = "impression") public long getImpression() { return impression; } public void setImpression(long impression) { this.impression = impression; } @XmlElement(name = "clicks") public int getClicks() { return clicks; } public void setClicks(int clicks) { this.clicks = clicks; } @XmlElement(name = "earning") public BigDecimal getEarning() { return earning; } public void setEarning(BigDecimal earning) { this.earning = earning; } } 

App.java

 public class App { public static void main(String[] args) { String[] springConfig = { "database.xml", "context.xml", "job-report.xml" }; ApplicationContext context = new ClassPathXmlApplicationContext(springConfig); JobLauncher jobLauncher = (JobLauncher) context.getBean("jobLauncher"); Job job = (Job) context.getBean("reportJob"); try { JobExecution execution = jobLauncher.run(job, new JobParameters()); System.out.println("Exit Status : " + execution.getStatus()); } catch (Exception e) { e.printStackTrace(); } System.out.println("Done"); } } 

你可以帮忙吗?

正如错误所指出的,您需要在“mongodbItemReader”bean上设置“type”属性。

请参阅MongoItemReader javadoc。

例:

      

您可能需要在值中指定包名称(我还没有尝试过)。

谢谢@Sergio,这对你很有帮助,但是下面的配置工作。

            

我看到唯一的问题,没有什么是写入XML文件。 我将针对这个问题提出一个单独的问题。

注意:此错误的主要原因是您需要正确设置此属性。

您还可以参考: http : //www.mkyong.com/spring-batch/how-to-convert-date-in-beanwrapperfieldsetmapper/作为另一种解决方案。