我正在尝试使用java-config在spring批处理中配置Flow,这个流程基本上必须这样做:
执行init步骤(在数据库中添加记录),
然后执行一个decider来检查文件是否存在,
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做出决定后执行步骤的正确方法是什么?
我正在尝试使用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)