我正在使用Spring Batch版本2.2.4.RELEASE我试着用有状态的ItemReader,ItemProcessor和ItemWriter bean编写一个简单的例子.
public class StatefulItemReader implements ItemReader<String> {
private List<String> list;
@BeforeStep
public void initializeState(StepExecution stepExecution) {
this.list = new ArrayList<>();
}
@AfterStep
public ExitStatus exploitState(StepExecution stepExecution) {
System.out.println("******************************");
System.out.println(" READING RESULTS : " + list.size());
return stepExecution.getExitStatus();
}
@Override
public String read() throws Exception {
this.list.add("some stateful reading information");
if (list.size() < 10) {
return "value " + list.size();
}
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
在我的集成测试中,我在一个内部静态java配置类中声明我的bean,如下所示:
@ContextConfiguration
@RunWith(SpringJUnit4ClassRunner.class)
public class SingletonScopedTest {
@Configuration
@EnableBatchProcessing
static class TestConfig {
@Autowired …Run Code Online (Sandbox Code Playgroud) 我正在尝试让Spring Batch 2.2与JavaConfig一起工作.
如今他们有一个@EnableBatchProcessing注释,可以设置很多东西.默认情况下,注释使用数据源作为其作业数据,但我们不希望保存此数据,也不希望为其创建表.文档说明了一些关于自定义但是我无法使其工作:
DataSource在上下文中提供bean作为bean,或者BatchConfigurer在配置类本身中实现,例如:public class AppConfig extends DefaultBatchConfigurer {
在我们的旧版本中,我们已经能够使用MapJobRepositoryFactoryBean类,因此它将所有数据保存在内存中.反正有没有使用完整的JavaConfig方式而没有定义DataSource?我无法让它发挥作用.
即使我定义了两个数据源(一个永远不会被使用的HSQL内存)和我们真正的Oracle数据源,它也不起作用,因为它找到两个数据源而不是一个.
任何人都知道如何让这个工作?或者是回归到以XML方式配置它的唯一解决方案?