BAEL-1543: Moving from XML to Java based Spring config.
This commit is contained in:
parent
8af29e8df5
commit
40e23a70e7
|
@ -0,0 +1,90 @@
|
|||
package org.baeldung.taskletsvschunks.config;
|
||||
|
||||
import org.baeldung.taskletsvschunks.chunks.LineProcessor;
|
||||
import org.baeldung.taskletsvschunks.chunks.LineReader;
|
||||
import org.baeldung.taskletsvschunks.chunks.LinesWriter;
|
||||
import org.baeldung.taskletsvschunks.model.Line;
|
||||
import org.springframework.batch.core.Job;
|
||||
import org.springframework.batch.core.Step;
|
||||
import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing;
|
||||
import org.springframework.batch.core.configuration.annotation.JobBuilderFactory;
|
||||
import org.springframework.batch.core.configuration.annotation.StepBuilderFactory;
|
||||
import org.springframework.batch.core.launch.JobLauncher;
|
||||
import org.springframework.batch.core.launch.support.SimpleJobLauncher;
|
||||
import org.springframework.batch.core.repository.JobRepository;
|
||||
import org.springframework.batch.core.repository.support.MapJobRepositoryFactoryBean;
|
||||
import org.springframework.batch.item.ItemProcessor;
|
||||
import org.springframework.batch.item.ItemReader;
|
||||
import org.springframework.batch.item.ItemWriter;
|
||||
import org.springframework.batch.support.transaction.ResourcelessTransactionManager;
|
||||
import org.springframework.batch.test.JobLauncherTestUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.transaction.PlatformTransactionManager;
|
||||
|
||||
@Configuration
|
||||
@EnableBatchProcessing
|
||||
public class ChunksConfig {
|
||||
|
||||
@Autowired private JobBuilderFactory jobs;
|
||||
|
||||
@Autowired private StepBuilderFactory steps;
|
||||
|
||||
@Bean
|
||||
public JobLauncherTestUtils jobLauncherTestUtils() {
|
||||
return new JobLauncherTestUtils();
|
||||
}
|
||||
|
||||
@Bean
|
||||
public JobRepository jobRepository() throws Exception {
|
||||
MapJobRepositoryFactoryBean factory = new MapJobRepositoryFactoryBean();
|
||||
factory.setTransactionManager(transactionManager());
|
||||
return (JobRepository) factory.getObject();
|
||||
}
|
||||
|
||||
@Bean
|
||||
public PlatformTransactionManager transactionManager() {
|
||||
return new ResourcelessTransactionManager();
|
||||
}
|
||||
|
||||
@Bean
|
||||
public JobLauncher jobLauncher() throws Exception {
|
||||
SimpleJobLauncher jobLauncher = new SimpleJobLauncher();
|
||||
jobLauncher.setJobRepository(jobRepository());
|
||||
return jobLauncher;
|
||||
}
|
||||
|
||||
@Bean
|
||||
public ItemReader<Line> itemReader() {
|
||||
return new LineReader();
|
||||
}
|
||||
|
||||
@Bean
|
||||
public ItemProcessor<Line, Line> itemProcessor() {
|
||||
return new LineProcessor();
|
||||
}
|
||||
|
||||
@Bean
|
||||
public ItemWriter<Line> itemWriter() {
|
||||
return new LinesWriter();
|
||||
}
|
||||
|
||||
@Bean
|
||||
protected Step processLines(ItemReader<Line> reader, ItemProcessor<Line, Line> processor, ItemWriter<Line> writer) {
|
||||
return steps.get("processLines").<Line, Line> chunk(2)
|
||||
.reader(reader)
|
||||
.processor(processor)
|
||||
.writer(writer)
|
||||
.build();
|
||||
}
|
||||
|
||||
@Bean
|
||||
public Job job() {
|
||||
return jobs
|
||||
.get("chunksJob")
|
||||
.start(processLines(itemReader(), itemProcessor(), itemWriter()))
|
||||
.build();
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,103 @@
|
|||
package org.baeldung.taskletsvschunks.config;
|
||||
|
||||
import org.baeldung.taskletsvschunks.tasklets.LinesProcessor;
|
||||
import org.baeldung.taskletsvschunks.tasklets.LinesReader;
|
||||
import org.baeldung.taskletsvschunks.tasklets.LinesWriter;
|
||||
import org.springframework.batch.core.Job;
|
||||
import org.springframework.batch.core.Step;
|
||||
import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing;
|
||||
import org.springframework.batch.core.configuration.annotation.JobBuilderFactory;
|
||||
import org.springframework.batch.core.configuration.annotation.StepBuilderFactory;
|
||||
import org.springframework.batch.core.launch.JobLauncher;
|
||||
import org.springframework.batch.core.launch.support.SimpleJobLauncher;
|
||||
import org.springframework.batch.core.repository.JobRepository;
|
||||
import org.springframework.batch.core.repository.support.MapJobRepositoryFactoryBean;
|
||||
import org.springframework.batch.support.transaction.ResourcelessTransactionManager;
|
||||
import org.springframework.batch.test.JobLauncherTestUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.transaction.PlatformTransactionManager;
|
||||
|
||||
@Configuration
|
||||
@EnableBatchProcessing
|
||||
public class TaskletsConfig {
|
||||
|
||||
@Autowired private JobBuilderFactory jobs;
|
||||
|
||||
@Autowired private StepBuilderFactory steps;
|
||||
|
||||
@Bean
|
||||
public JobLauncherTestUtils jobLauncherTestUtils() {
|
||||
return new JobLauncherTestUtils();
|
||||
}
|
||||
|
||||
@Bean
|
||||
public JobRepository jobRepository() throws Exception {
|
||||
MapJobRepositoryFactoryBean factory = new MapJobRepositoryFactoryBean();
|
||||
factory.setTransactionManager(transactionManager());
|
||||
return (JobRepository) factory.getObject();
|
||||
}
|
||||
|
||||
@Bean
|
||||
public PlatformTransactionManager transactionManager() {
|
||||
return new ResourcelessTransactionManager();
|
||||
}
|
||||
|
||||
@Bean
|
||||
public JobLauncher jobLauncher() throws Exception {
|
||||
SimpleJobLauncher jobLauncher = new SimpleJobLauncher();
|
||||
jobLauncher.setJobRepository(jobRepository());
|
||||
return jobLauncher;
|
||||
}
|
||||
|
||||
@Bean
|
||||
public LinesReader linesReader() {
|
||||
return new LinesReader();
|
||||
}
|
||||
|
||||
@Bean
|
||||
public LinesProcessor linesProcessor() {
|
||||
return new LinesProcessor();
|
||||
}
|
||||
|
||||
@Bean
|
||||
public LinesWriter linesWriter() {
|
||||
return new LinesWriter();
|
||||
}
|
||||
|
||||
@Bean
|
||||
protected Step readLines() {
|
||||
return steps
|
||||
.get("readLines")
|
||||
.tasklet(linesReader())
|
||||
.build();
|
||||
}
|
||||
|
||||
@Bean
|
||||
protected Step processLines() {
|
||||
return steps
|
||||
.get("processLines")
|
||||
.tasklet(linesProcessor())
|
||||
.build();
|
||||
}
|
||||
|
||||
@Bean
|
||||
protected Step writeLines() {
|
||||
return steps
|
||||
.get("writeLines")
|
||||
.tasklet(linesWriter())
|
||||
.build();
|
||||
}
|
||||
|
||||
@Bean
|
||||
public Job job() {
|
||||
return jobs
|
||||
.get("taskletsJob")
|
||||
.start(readLines())
|
||||
.next(processLines())
|
||||
.next(writeLines())
|
||||
.build();
|
||||
}
|
||||
|
||||
}
|
|
@ -1,39 +0,0 @@
|
|||
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:batch="http://www.springframework.org/schema/batch"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://www.springframework.org/schema/batch
|
||||
http://www.springframework.org/schema/batch/spring-batch-3.0.xsd
|
||||
http://www.springframework.org/schema/beans
|
||||
http://www.springframework.org/schema/beans/spring-beans-4.2.xsd">
|
||||
|
||||
<bean class="org.springframework.batch.test.JobLauncherTestUtils"/>
|
||||
|
||||
<bean id="jobRepository"
|
||||
class="org.springframework.batch.core.repository.support.MapJobRepositoryFactoryBean">
|
||||
<property name="transactionManager" ref="transactionManager"/>
|
||||
</bean>
|
||||
|
||||
<bean id="transactionManager"
|
||||
class="org.springframework.batch.support.transaction.ResourcelessTransactionManager"/>
|
||||
|
||||
<bean id="jobLauncher"
|
||||
class="org.springframework.batch.core.launch.support.SimpleJobLauncher">
|
||||
<property name="jobRepository" ref="jobRepository"/>
|
||||
</bean>
|
||||
|
||||
<bean id="lineReader" class="org.baeldung.taskletsvschunks.chunks.LineReader"/>
|
||||
|
||||
<bean id="lineProcessor" class="org.baeldung.taskletsvschunks.chunks.LineProcessor"/>
|
||||
|
||||
<bean id="linesWriter" class="org.baeldung.taskletsvschunks.chunks.LinesWriter"/>
|
||||
|
||||
<batch:job id="chunksJob">
|
||||
<batch:step id="processLines">
|
||||
<batch:tasklet>
|
||||
<batch:chunk reader="lineReader" writer="linesWriter" processor="lineProcessor" commit-interval="2"/>
|
||||
</batch:tasklet>
|
||||
<batch:end on="FAILED"/>
|
||||
<batch:end on="COMPLETED"/>
|
||||
</batch:step>
|
||||
</batch:job>
|
||||
|
||||
</beans>
|
|
@ -1,47 +0,0 @@
|
|||
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:batch="http://www.springframework.org/schema/batch"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://www.springframework.org/schema/batch
|
||||
http://www.springframework.org/schema/batch/spring-batch-3.0.xsd
|
||||
http://www.springframework.org/schema/beans
|
||||
http://www.springframework.org/schema/beans/spring-beans-4.2.xsd">
|
||||
|
||||
<bean class="org.springframework.batch.test.JobLauncherTestUtils"/>
|
||||
|
||||
<bean id="jobRepository"
|
||||
class="org.springframework.batch.core.repository.support.MapJobRepositoryFactoryBean">
|
||||
<property name="transactionManager" ref="transactionManager"/>
|
||||
</bean>
|
||||
|
||||
<bean id="transactionManager"
|
||||
class="org.springframework.batch.support.transaction.ResourcelessTransactionManager"/>
|
||||
|
||||
<bean id="jobLauncher"
|
||||
class="org.springframework.batch.core.launch.support.SimpleJobLauncher">
|
||||
<property name="jobRepository" ref="jobRepository"/>
|
||||
</bean>
|
||||
|
||||
<bean id="linesReader" class="org.baeldung.taskletsvschunks.tasklets.LinesReader"/>
|
||||
|
||||
<bean id="linesProcessor" class="org.baeldung.taskletsvschunks.tasklets.LinesProcessor"/>
|
||||
|
||||
<bean id="linesWriter" class="org.baeldung.taskletsvschunks.tasklets.LinesWriter"/>
|
||||
|
||||
<batch:job id="taskletsJob">
|
||||
<batch:step id="readLines">
|
||||
<batch:tasklet ref="linesReader"/>
|
||||
<batch:end on="FAILED"/>
|
||||
<batch:next on="*" to="processLines"/>
|
||||
</batch:step>
|
||||
<batch:step id="processLines">
|
||||
<batch:tasklet ref="linesProcessor"/>
|
||||
<batch:end on="FAILED"/>
|
||||
<batch:next on="*" to="writeLines"/>
|
||||
</batch:step>
|
||||
<batch:step id="writeLines">
|
||||
<batch:tasklet ref="linesWriter"/>
|
||||
<batch:end on="FAILED"/>
|
||||
<batch:end on="COMPLETED"/>
|
||||
</batch:step>
|
||||
</batch:job>
|
||||
|
||||
</beans>
|
|
@ -1,5 +1,6 @@
|
|||
package org.baeldung.taskletsvschunks.chunks;
|
||||
|
||||
import org.baeldung.taskletsvschunks.config.ChunksConfig;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
|
@ -11,7 +12,7 @@ import org.springframework.test.context.ContextConfiguration;
|
|||
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
||||
|
||||
@RunWith(SpringJUnit4ClassRunner.class)
|
||||
@ContextConfiguration(locations = "classpath:/taskletsvschunks/chunks.xml")
|
||||
@ContextConfiguration(classes = ChunksConfig.class)
|
||||
public class ChunksTest {
|
||||
|
||||
@Autowired private JobLauncherTestUtils jobLauncherTestUtils;
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package org.baeldung.taskletsvschunks.tasklets;
|
||||
|
||||
import org.baeldung.taskletsvschunks.config.TaskletsConfig;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
|
@ -11,7 +12,7 @@ import org.springframework.test.context.ContextConfiguration;
|
|||
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
||||
|
||||
@RunWith(SpringJUnit4ClassRunner.class)
|
||||
@ContextConfiguration(locations = "classpath:/taskletsvschunks/tasklets.xml")
|
||||
@ContextConfiguration(classes = TaskletsConfig.class)
|
||||
public class TaskletsTest {
|
||||
|
||||
@Autowired private JobLauncherTestUtils jobLauncherTestUtils;
|
||||
|
|
Loading…
Reference in New Issue