springbatch记录(7)

Joblauncher实现作业调度

前端

 controller:

 监听:

public class JobLauncherDemo implements StepExecutionListener{

    @Autowired
    private JobBuilderFactory jobBuilderFactory;
    @Autowired
    private StepBuilderFactory stepBuilderFactory;
    @Autowired
	private Map<String,JobParameters> parameters;
	
    @Bean
    public Job jobLauncherDemoJob() {
        return jobBuilderFactory.get("jobLauncherDemoJob")
				.listener(this)
                .start(jobLauncherDemoStep())
                .build();
    }
		
	@Bean
    public Step jobLauncherDemoStep() {
        return stepBuilderFactory.get("jobLauncherDemoStep")
                .tasklet(new Tasklet() {
                    @Override
                    public RepeatStatus execute(StepContribution stepContribution, ChunkContext chunkContext) throws Exception {
                        System.out.println("jobLauncherDemoStep,msg: "+parameter.get("msg").getValue());
                        return RepeatStatus.FINISHED;
                    }
                }).build();
    }
	  
	@Override
	public void beforeStep(StepExecution stepExcution){
		parameter = stepExcution.getJobParameters().getParameters();
	}
 

JobOperator使用

对Joblauncher的封装

前端:

<input type="text" id="msg">
<button onclick="runJob2()">Run Job 2</button>

<script type="text/javascript">
	var baseurl="http://localhost:8080";
	var xhttp=new XMLHttpRequest();
	
	function runJob1(){
		var msg = document.getElementById('msg').value;
		var url = baseurl + '/job/' +msg;
		xhttp.open('GET',url,true);
		xhttp.send();
		
		xhttp.onreadystatechange = function(){
			if(this.readyState == 4 && this.status ==200){
				console.log('Job status: '+this.responseText);
			}
		}
	}
	
</script>

控制器controller:

 

”jobOperatorDemoJob“:只是一个字符串。

msg可以直接键值对传过去。

JobOperator需要自己生成Bean。

 

 

 

创建JobRegistrar:

1.创建JobRegistryBeanPostProcessor

2.设置jobRegistry

3.设置BeanFactory,而BeanFactory需要上下文appliactionContext(实现ApplicationAware自动注入)得到

4.通过afterPropertiesSet更新。

1生成simpleJobOperator实例.

2.设置job启动对象joblauncher(框架可以直接注入)

3.将msg转换为Jobparameters类型,使用默认的参数转换类型:DefaultJobParametersConverter。

4.设置job持久化,(框架可以直接注入)

5.设置jobExplor(可以获取和任务相关的信息:JobInstance)(框架可以直接注入)

6.设置job注册:在controller中,jobOperatorDemoJob只是个字符串,并不是job对象。将字符串和具体的任务对象关联起来,就需要注册

 

 使用parameter中的msg信息

 自动注入application

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值