首先讲一下batch框架提供的一组job执行的api 如下图

说明:

应用场景 包含三种 标准的web ,定时任务调度,命令行

1.命令行

通过命令行在单独的jvm中调用 进行批处理作业 springbatch提供了命令行执行类 commandLineJobRunner

1.将项目构件为jar

2. 进入jar项目目录 执行jar包

注意:  默认从classpath路径开始加载配置文件

-restart 根据job名称重启最后一次失败作业

-stop  根据job名称停止正在执行的作业

-abandon 废弃正在执行的作业

-next 根据jobparameters去执行下一次作业

如果需要自定义任务退出状态 实现exicodetmapper  然后配置即可

2.与定时任务集成


结合spring schdule 可以很简单的实现定时集成

1.定义一个schdule 提供执行定时任务的线程

2.定义所需要的方法和调度周期

<task:scheduler id="scheduler" pool-size="" /> 定义线程池大小

    <!-- 每一秒钟,执行对象schedulerLauncher的launch方法一次 -->
<task:scheduled-tasks scheduler="scheduler">
<task:scheduled ref="schedulerLauncher" method="launch" fixed-rate="" /> fixrate代表一秒执行一次 在schduleLaucher中的lauch方法
</task:scheduled-tasks> <bean:bean id="schedulerLauncher"
class="com.juxtapose.example.ch04.scheduler.SchedulerLauncher">
<bean:property name="job" ref="helloworldJob" />
<bean:property name="jobLauncher" ref="jobLauncher" />
</bean:bean>
省略其余配置

3.与web集成

spring barch 有spring基础开发完成 内嵌在spring框架中提供http协议远成调用或者web系统定时调用

如下图:

//定义一个controller提供调用
import java.util.Enumeration; import javax.servlet.http.HttpServletRequest; import org.springframework.batch.core.JobParameters;
import org.springframework.batch.core.JobParametersBuilder;
import org.springframework.batch.core.configuration.JobRegistry;
import org.springframework.batch.core.launch.JobLauncher;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam; @Controller
public class JobLauncherController { private static final String JOB_NAME = "jobName";
private JobLauncher jobLauncher;
private JobRegistry jobRegistry; public JobLauncherController(JobLauncher jobLauncher, JobRegistry jobRegistry) {
this.jobLauncher = jobLauncher;
this.jobRegistry = jobRegistry;
} @RequestMapping(value="executeJob",method=RequestMethod.GET)
public void launch(@RequestParam String jobName,HttpServletRequest request)
throws Exception {
JobParameters jobParameters = bulidParameters(request);
jobLauncher.run( jobRegistry.getJob(jobName),jobParameters);
} private JobParameters bulidParameters(HttpServletRequest request) {
JobParametersBuilder builder = new JobParametersBuilder();
@SuppressWarnings("unchecked")
Enumeration<String> paramNames = request.getParameterNames();
while(paramNames.hasMoreElements()) {
String paramName = paramNames.nextElement();
if(!JOB_NAME.equals(paramName)) {
builder.addString(paramName,request.getParameter(paramName));
}
}
return builder.toJobParameters();
}
}  

配置文件

<!-- 作业仓库 -->
<job-repository id="jobRepository" data-source="dataSource"
transaction-manager="transactionManager" isolation-level-for-create="SERIALIZABLE"
table-prefix="BATCH_" max-varchar-length=""
/> <!-- 作业调度器 -->
<bean:bean id="jobLauncher"
class="org.springframework.batch.core.launch.support.SimpleJobLauncher">
<bean:property name="jobRepository" ref="jobRepository"/>
</bean:bean>

通过这个类 可以在job被加载后加入注册。然后被获取
<bean:bean class="org.springframework.batch.core.configuration.support.JobRegistryBeanPostProcessor">
<bean:property name="jobRegistry" ref="jobRegistry" />
</bean:bean> <bean:bean id="jobRegistry" job注册
class="org.springframework.batch.core.configuration.support.MapJobRegistry" /> <!-- 事务管理器 -->
<bean:bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<bean:property name="dataSource" ref="dataSource" />
</bean:bean> <!-- 数据源 -->
<bean:bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<bean:property name="driverClassName">
<bean:value>com.mysql.jdbc.Driver</bean:value>
</bean:property>
<bean:property name="url">
<bean:value>jdbc:mysql://127.0.0.1:3306/test1289</bean:value>
</bean:property>
<bean:property name="username" value="root"></bean:property>
<bean:property name="password" value=""></bean:property>
</bean:bean>
</bean:beans> 构造controlller

<bean class="com.juxtapose.example.ch04.web.JobLauncherController">
<constructor-arg ref="jobLauncher" />
<constructor-arg ref="jobRegistry" />
</bean>
</beans>

别的配置 如web.xml之类的省略。

启动web项目 就可以通过url访问了

基本就以上三种方法

  

最新文章

  1. 初识JNI
  2. http协议(十)实体首部字段
  3. Windows如何使用jstack跟踪异常代码
  4. IOS第四天(1:图片的方法和缩小,遮罩层)
  5. linux内核3.4基于wakeup_source的autosleep机制分析
  6. 两种方式判断类的存在→className getAttribute
  7. VMware系统运维(十四)部署虚拟化桌面 Horzion View Manager 5.2 配置许可
  8. 一些css效果积累
  9. rop框架签名功能控制
  10. C++线性序列容器&lt;vector&gt;简单总结
  11. 趋势:Chrome为打包应用提供强大新特性
  12. Java中的常量治理
  13. hdu--1421--dp--搬寝室
  14. Linux Socket多线程实现简单的多人聊天(pend)
  15. 设计模式 --&gt; (7)外观模式
  16. MySQL数据库的基本使用简单易懂
  17. PREV-6_蓝桥杯_翻硬币
  18. P2472 [SCOI2007]蜥蜴(网络最大流)
  19. 使用ioctl获取网卡统计信息
  20. selenium3.0 远程模式

热门文章

  1. 原生js实现ajax的文件异步提交功能、图片预览功能.实例
  2. ping 原理与ICMP协议[转]
  3. windows下的IO模型之选择(select)模型
  4. c#在winform中用DataGridView实现分页效果
  5. DBMS_LOB的简单用法以及释放DBMS_LOB生成的临时CLOB内存
  6. 043——VUE中组件之使用.sync修饰符与computed计算属性实现购物车原理
  7. timer Compliant Controller project (1)--Product introduction meeting
  8. FIS 的思想和优点
  9. 如何修改windows系统的host文件
  10. cuDnn的安装ubuntu16.04环境下(tensorflow正式安装之前的必备安装操作)