At this article I will create a JobRepository.
What is JobRepository?
1. Concepts.
- CRUD in SQL:
Operation SQL Create INSERT Read SELECT Update UPDATE Delete DELETE - JobRepository
Repository responsible for persistence of batch meta-data entities.
The task of storing and putting the object information into the correct installation of Spring Batch.
Table Object BATCH_JOB_INSTANCE JobInstance BATCH_JOB_EXECUTION JobExecution BATCH_JOB_EXECUTION_PARAMS JobParameters BATCH_STEP_EXECUTION StepExecution BATCH_JOB_EXECUTION_CONTEXT ExecutionContext BATCH_STEP_EXECUTION_CONTEXT ExecutionContext
2. Create a demo project.
Visit spring initializr to create a project
- Add the necessary libraries to the project:
- Click:
3. Install resource.
- In the application.properties file, perform config initialization tables.12spring.batch.initialize-schema=always
- Create a MySQL database connection class config1234567891011121314<span class="token annotation punctuation">@Configuration</span><span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">DataSourceConfiguration</span> <span class="token punctuation">{</span><span class="token annotation punctuation">@Bean</span><span class="token keyword">public</span> <span class="token class-name">DataSource</span> <span class="token function">dataSource</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span><span class="token keyword">return</span> <span class="token class-name">DataSourceBuilder</span><span class="token punctuation">.</span> <span class="token function">create</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span><span class="token punctuation">.</span> <span class="token function">username</span> <span class="token punctuation">(</span> <span class="token string">"root"</span> <span class="token punctuation">)</span><span class="token punctuation">.</span> <span class="token function">password</span> <span class="token punctuation">(</span> <span class="token string">"root"</span> <span class="token punctuation">)</span><span class="token punctuation">.</span> <span class="token function">url</span> <span class="token punctuation">(</span> <span class="token string">"jdbc:mysql://localhost:3306/testdb"</span> <span class="token punctuation">)</span><span class="token punctuation">.</span> <span class="token function">build</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span><span class="token punctuation">}</span><span class="token punctuation">}</span>
- Create config for jobRepository123456789101112131415161718192021222324252627282930313233343536373839<span class="token annotation punctuation">@Configuration</span><span class="token annotation punctuation">@EnableBatchProcessing</span><span class="token annotation punctuation">@Import</span> <span class="token punctuation">(</span> <span class="token punctuation">{</span> <span class="token class-name">DataSourceConfiguration</span> <span class="token punctuation">.</span> <span class="token keyword">class</span> <span class="token punctuation">}</span> <span class="token punctuation">)</span><span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">BatchConfig</span> <span class="token keyword">implements</span> <span class="token class-name">BatchConfigurer</span> <span class="token punctuation">{</span><span class="token annotation punctuation">@Autowired</span><span class="token keyword">private</span> <span class="token class-name">DataSource</span> dataSource <span class="token punctuation">;</span><span class="token annotation punctuation">@Bean</span><span class="token keyword">public</span> <span class="token class-name">JobRepository</span> <span class="token function">jobRepository</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token keyword">throws</span> <span class="token class-name">Exception</span> <span class="token punctuation">{</span><span class="token keyword">return</span> <span class="token function">getJobRepository</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span><span class="token punctuation">}</span><span class="token annotation punctuation">@Bean</span><span class="token keyword">public</span> <span class="token class-name">PlatformTransactionManager</span> <span class="token function">platformTransactionManager</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token keyword">throws</span> <span class="token class-name">Exception</span> <span class="token punctuation">{</span><span class="token keyword">return</span> <span class="token function">getTransactionManager</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span><span class="token punctuation">}</span><span class="token annotation punctuation">@Override</span><span class="token keyword">public</span> <span class="token class-name">JobRepository</span> <span class="token function">getJobRepository</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token keyword">throws</span> <span class="token class-name">Exception</span> <span class="token punctuation">{</span><span class="token keyword">return</span> <span class="token function">createJobRepository</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span><span class="token punctuation">}</span><span class="token keyword">protected</span> <span class="token class-name">JobRepository</span> <span class="token function">createJobRepository</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token keyword">throws</span> <span class="token class-name">Exception</span> <span class="token punctuation">{</span><span class="token class-name">JobRepositoryFactoryBean</span> factory <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">JobRepositoryFactoryBean</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span>factory <span class="token punctuation">.</span> <span class="token function">setDataSource</span> <span class="token punctuation">(</span> dataSource <span class="token punctuation">)</span> <span class="token punctuation">;</span>factory <span class="token punctuation">.</span> <span class="token function">setTransactionManager</span> <span class="token punctuation">(</span> <span class="token function">getTransactionManager</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span>factory <span class="token punctuation">.</span> <span class="token function">afterPropertiesSet</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span><span class="token keyword">return</span> factory <span class="token punctuation">.</span> <span class="token function">getObject</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span><span class="token punctuation">}</span><span class="token annotation punctuation">@Override</span><span class="token keyword">public</span> <span class="token class-name">PlatformTransactionManager</span> <span class="token function">getTransactionManager</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token keyword">throws</span> <span class="token class-name">Exception</span> <span class="token punctuation">{</span><span class="token keyword">return</span> <span class="token keyword">new</span> <span class="token class-name">DataSourceTransactionManager</span> <span class="token punctuation">(</span> <span class="token keyword">this</span> <span class="token punctuation">.</span> dataSource <span class="token punctuation">)</span> <span class="token punctuation">;</span><span class="token punctuation">}</span><span class="token punctuation">.</span> <span class="token punctuation">.</span> <span class="token punctuation">.</span> <span class="token punctuation">.</span><span class="token punctuation">}</span>
- Perform a run once we get a system tables group of Spring Batch
4. Class Controller
- Next create a class controller that sends a request url to execute creating a JobExecution123456789101112131415161718192021222324<span class="token annotation punctuation">@Controller</span><span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">RequestRepositoryExample</span> <span class="token punctuation">{</span><span class="token annotation punctuation">@Autowired</span><span class="token keyword">private</span> <span class="token class-name">JobRepository</span> jobRepository <span class="token punctuation">;</span><span class="token annotation punctuation">@Autowired</span><span class="token keyword">private</span> <span class="token class-name">DefaultBatchConfigurer</span> defaultBatchConfigurer <span class="token punctuation">;</span><span class="token annotation punctuation">@RequestMapping</span> <span class="token punctuation">(</span> value <span class="token operator">=</span> <span class="token string">"/jobRepository"</span> <span class="token punctuation">,</span> method <span class="token operator">=</span> <span class="token class-name">RequestMethod</span> <span class="token punctuation">.</span> GET <span class="token punctuation">)</span><span class="token annotation punctuation">@ResponseBody</span><span class="token keyword">public</span> <span class="token class-name">String</span> <span class="token function">execute</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token keyword">throws</span> <span class="token class-name">Exception</span> <span class="token punctuation">{</span><span class="token comment">// Creating params</span><span class="token class-name">JobParametersBuilder</span> jobParametersBuilder <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">JobParametersBuilder</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span>jobParametersBuilder <span class="token punctuation">.</span> <span class="token function">addString</span> <span class="token punctuation">(</span> <span class="token string">"firstParamter"</span> <span class="token punctuation">,</span> <span class="token string">"1"</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span><span class="token comment">// Register</span>defaultBatchConfigurer <span class="token punctuation">.</span> <span class="token function">getJobRepository</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span><span class="token punctuation">.</span> <span class="token function">createJobExecution</span> <span class="token punctuation">(</span> <span class="token string">"jobName"</span> <span class="token punctuation">,</span> jobParametersBuilder <span class="token punctuation">.</span> <span class="token function">toJobParameters</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span><span class="token keyword">return</span> <span class="token string">"<h1>Batch Success</h1>"</span> <span class="token punctuation">;</span><span class="token punctuation">}</span><span class="token punctuation">}</span>
5. Check
- Make a request “/ jobRepository”
- Check if Job with “jobName” is registered.
- Already signed the job’s params successfully.
So has successfully registered a Job through the jobRepository class.
What’s wrong with everyone’s suggestions.