我可以在xml配置中使用ope="Step"
而没有任何问题,但如果将其用作如下注释。它会抛出以下错误
原因:组织。springframework。豆。工厂UnsatisfiedDependencyException:创建在类路径资源[BatchConfiguration.class]中定义的名为“step1”的bean时出错:通过索引1为[org.springframework.batch.item.ItemReader]类型的构造函数参数表示的未满足的依赖性::创建名为“reader”的bean时出错:作用域“step”对于当前线程不处于活动状态;如果您打算从单例引用这个bean,请考虑为它定义一个作用域代理;嵌套异常为java。lang.IllegalStateException:没有可用于步骤范围的上下文持有者;嵌套异常为org。springframework。豆。工厂BeanCreationException:创建名为“reader”的bean时出错:作用域“step”对于当前线程不是活动的;如果您打算从单例引用这个bean,请考虑为它定义一个作用域代理;嵌套异常为java。lang.IllegalStateException:没有可用于步骤作用域的上下文保持器
主要观点是:
当前线程的作用域“步骤”未处于活动状态;
根本原因是什么?
public class BatchConfiguration {
@Bean
@Scope("step")
public ItemReader<Source> reader(@Value("#{jobParameters['fileName']}") String fileName) {
System.out.println("*****************************");
System.out.println("read file of "+fileName);
System.out.println("*****************************");
FlatFileItemReader<Source> reader = new FlatFileItemReader<Source>();
reader.setResource(new FileSystemResource(fileName));
reader.setLineMapper(new DefaultLineMapper<Source>() {{
setLineTokenizer(new DelimitedLineTokenizer() {{
setNames(new String[] { "firstName", "lastName" });
}});
setFieldSetMapper(new BeanWrapperFieldSetMapper<Source>() {{
setTargetType(Source.class);
}});
}});
return reader;
}
您需要使用以下两种方式中的任何一种
@Scope(value="step",
proxyMode=TARGET_CLASS)
或
@Bean
@StepScope
我正在处理一个使用Spring批处理的项目。在本项目中,我使用Spring批处理后期绑定,其中我使用JobParameters注入了一个参数(将用作SQL读取器查询的条件的字符串)。目前,我正在使用进行后期绑定,所有操作都非常正常。 这里我要问的是何时使用以及何时使用。我已经阅读了Spring批处理参考文件,并在谷歌上搜索了StepScope和jobscope。我得到的只是: a.StepScop
我试图从步骤(实现接口Tasklet的类的execute方法)内部启动作业。 显然我收到了例外 Java语言lang.IllegalStateException:在JobRepository中检测到现有事务 如何使Spring批处理步骤不是事务性的? 有人能解决我从一步内启动工作的主要需求吗? 提前感谢您的帮助!
根据spring batch中的某些条件,是否可以执行一个步骤或跳过它并继续下一步。例如,批处理作业中有5个步骤,在执行每个步骤之前,我们需要根据数据库中某个列的值检查是否跳过它。需求是通过监听器或其他方式创建通用逻辑,以控制运行时的步骤执行? 我需要在运行时填充下一个属性。示例xml: 但它引发了异常:配置问题:元素[step2]无法访问| 我认为spring不允许在运行时绑定下一个属性。请给出
我最近使用。我对DB表进行了必要的更改,并对一些与参数API相关的微小代码进行了更改。 现在,当我运行应用程序时,它正在工作,但是如果一个步骤的退出状态为失败,则作业的存在状态设置为完成。这会导致一些问题,因为我们的应用程序代码将其视为成功执行。我通过在中添加一个代码片段来解决这个问题,在这里我检查列表并手动设置作业退出状态,但是Spring批处理框架不应该处理退出状态吗?
我是批处理领域的新手,我正在尝试使用Spring batch解决下面提到的问题。我真的很难从中创建多步骤批处理作业。 给予 包含多个学生记录的csv文件 我们有一个RESTendpoint,该endpoint记录学生在所有科目中的分数,并为每个学生返回结果(通过/失败)。通过/失败逻辑在给定的restendpoint中定义。 待办事项 从csv中读取一批记录,每批进行一次REST调用,根据每个学生
我正在尝试修复Spring Batch中的一个问题,这个问题最近一直困扰着我们的系统。我们有一份工作,在大多数情况下都很好。下载和处理数据是一个多步骤的工作。 问题是有时工作会爆棚。也许我们试图连接到的服务器抛出了错误,或者我们在工作进行到一半时关闭了服务器。此时,下次我们的quartz调度程序尝试运行该作业时,它似乎什么也不做。以下是此作业定义的删节版本: 委婉地说,我是Spring Batch