class Job1Configuration {

	private final Random random;

	public Job1Configuration() {
		this.random = new Random();
	}

	@Bean
	public Job job1(JobRepository jobRepository, PlatformTransactionManager transactionManager) {
		return new JobBuilder("job1", jobRepository).start(step1(jobRepository, transactionManager))
			.next(step2(jobRepository, transactionManager))
			.build();
	}

	@Bean
	public Step step1(JobRepository jobRepository, PlatformTransactionManager transactionManager) {
		return new StepBuilder("step1", jobRepository).tasklet((contribution, chunkContext) -> {
			System.out.println("hello");
			// simulate processing time
			Thread.sleep(random.nextInt(3000));
			return RepeatStatus.FINISHED;
		}, transactionManager).build();
	}

	@Bean
	public Step step2(JobRepository jobRepository, PlatformTransactionManager transactionManager) {<FILL_FUNCTION_BODY>}

}

		return new StepBuilder("step2", jobRepository).tasklet((contribution, chunkContext) -> {
			System.out.println("world");
			// simulate step failure
			int nextInt = random.nextInt(3000);
			Thread.sleep(nextInt);
			if (nextInt % 5 == 0) {
				throw new Exception("Boom!");
			}
			return RepeatStatus.FINISHED;
		}, transactionManager).build();
	
<no_super_class>