相关疑难解决方法(0)

Spring-batch @BeforeStep不适用于@StepScope

我正在使用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)

java spring spring-batch

25
推荐指数
1
解决办法
2万
查看次数

Spring批处理2.2 JavaConfig

我正在尝试让Spring Batch 2.2与JavaConfig一起工作.

如今他们有一个@EnableBatchProcessing注释,可以设置很多东西.默认情况下,注释使用数据源作为其作业数据,但我们不希望保存此数据,也不希望为其创建表.文档说明了一些关于自定义但是我无法使其工作:

  • 用户必须DataSource在上下文中提供bean作为bean,或者BatchConfigurer在配置类本身中实现,例如:

public class AppConfig extends DefaultBatchConfigurer {

在我们的旧版本中,我们已经能够使用MapJobRepositoryFactoryBean类,因此它将所有数据保存在内存中.反正有没有使用完整的JavaConfig方式而没有定义DataSource?我无法让它发挥作用.

即使我定义了两个数据源(一个永远不会被使用的HSQL内存)和我们真正的Oracle数据源,它也不起作用,因为它找到两个数据源而不是一个.

任何人都知道如何让这个工作?或者是回归到以XML方式配置它的唯一解决方案?

java spring annotations spring-batch

2
推荐指数
1
解决办法
5804
查看次数

标签 统计

java ×2

spring ×2

spring-batch ×2

annotations ×1