小编Dan*_*ehl的帖子

在jobExeuctionDecider之后执行Spring Batch(java-config)步骤

我正在尝试使用java-config在spring批处理中配置Flow,这个流程基本上必须这样做:

  1. 执行init步骤(在数据库中添加记录),

  2. 然后执行一个decider来检查文件是否存在,

2.1.如果文件存在,它将执行加载作业(这是一个并行的一堆步骤的另一个流程)

  1. 执行完成步骤(在数据库中添加记录),这应始终运行,即使2.1未执行.

我尝试进行此配置,但完成步骤永远不会运行:

        Flow flow = new FlowBuilder<SimpleFlow>("commonFlow")
            .start(stepBuilderFactory.get("initStep").tasklet(initTasklet).build())
            .next(decider)
                .on(FlowExecutionStatus.COMPLETED.getName())
                    .to(splitFlow)
                .from(decider).on("*")
                    .end()
    .next(stepBuilderFactory.get("finishStep").tasklet(finishTasklet).build())
            .end();
Run Code Online (Sandbox Code Playgroud)

我可以让它按照下面的方式工作,但它根本不优雅:

    Step finishStep = stepBuilderFactory.get("finishStep").tasklet(finishTasklet).build();

    Flow flow = new FlowBuilder<SimpleFlow>("commonFlow")
            .start(stepBuilderFactory.get("initStep").tasklet(initTasklet).build())
            .next(decider)
                .on(FlowExecutionStatus.COMPLETED.getName())
                    .to(splitFlow)
                    .next(finishStep)
                .from(decider).on("*")
                    .to(finishStep)
            .end();
Run Code Online (Sandbox Code Playgroud)

有人知道在使用java-config做出决定后执行步骤的正确方法是什么?

java spring spring-batch spring-java-config

5
推荐指数
1
解决办法
2048
查看次数

Spring-boot&hibernate,使用事务

我正在尝试使用spring-boot和hibernate.当我使用存储库时,它运行良好,但我正在尝试使用Hibernate会话来创建DAO,并且此DAO不是事务的一部分.

这是测试代码:

Application.java

@Configuration
@ComponentScan
@EnableAutoConfiguration
@EnableTransactionManagement
public class Application implements CommandLineRunner {

    @Autowired
    private UserBusiness userBusiness;

    @Autowired
    @Bean(name="sessionFactory")
    public SessionFactory sessionFactory(HibernateEntityManagerFactory factory) {
        return factory.getSessionFactory();
    }       

    @Override
    public void run(String... arg0) throws Exception {
        try {
            userBusiness.createAdminUsers();
        } catch (Exception e) {
            e.printStackTrace();
        }

        System.out.println(userBusiness.listAll());
    }

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args).close();
    }
}
Run Code Online (Sandbox Code Playgroud)

UserBusinessImpl.java:

@Service
public class UserBusinessImpl implements UserBusiness {

    @Autowired
    private UserRepository userRepository;

    @Autowired
    private UserDao userDao;

    @Transactional(rollbackFor=Exception.class)
    public void createAdminUsers() throws Exception { …
Run Code Online (Sandbox Code Playgroud)

hibernate transactional spring-boot

4
推荐指数
1
解决办法
8418
查看次数