六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 156|回复: 0

Spring Batch Getting Started

[复制链接]

升级  2.67%

12

主题

12

主题

12

主题

秀才

Rank: 2

积分
54
 楼主| 发表于 2013-1-14 23:45:15 | 显示全部楼层 |阅读模式
首先建立工程:
   【1】download STS 实际上就是eclipse+spring的一些plugin非常好用 -->http://www.springsource.com/products/sts
   【2】new->spring Template Project -> spring batch project
剩下的,直接运行各个junt的test都能够完美通过。

然后来读一下代码:   
    这个template的结构很简单主要是给大家做模板用的么!
一个reader 一个write 基本就结束了。
配置也很清晰,一个launch-context.xml 还有一个module-context.xml.
但是运行的时候还是有几点让我感到疑惑:
【1】batch.properties中有这样一句 batch.schema.script=schema-hsqldb.sql ,但是我横竖在源代码中没有找到,但是成寻运行很完美,神奇啊。
按我的理解schema-hsqldb.sql应该放的是spring batch 执行时的状态信息的表结构的,比如表BATCH_JOB_INSTANCE的表结构之类的。仔细一找,哈哈原来躲在 spring-batch-core-xx.jar里面呢。
【2】表结构是如何在数据库里面创建的呢?
答案就在类DataSourceInitializer它执行的时候会读取schema-hsqldb.sql的内容创建表结构。
【3】DataSourceInitializer是何时执行的的呢?
这个问题困扰我了很久,最后发现只要是单列的,基本上xml load分析的过程中都会把里面定义的bean初始化。为此我还做了个测试建立个普通的bean然后在lauch-context中定义,发现在load的时候也被初始化了。
【4】如果不以mem的方式运行hsql呢?
   将batch.properties的 #batch.jdbc.url=jdbc:hsqldb:mem:testdb;sql.enforce_strict_size=true 注销。打开配置batch.jdbc.url=jdbc:hsqldb:hsql://localhost:9001/samples
   另外还需要在工程目录下建立一个server.properties文件简单如下
   <code>
   server.database.0     file:./samples
       server.dbname.0 samples
       </code>
   然后先启动hsql数据库,让后启动测试程序,完美。再用DbVisualizer Free 6.5.4查看一下数据库的内容果然所有的状态都很好的保存在了数据库中。
   由于server方式运行的hsql的数据库是有持久性的,所以要再次运行测试必须完成以下两步。
      第一步:在launch-context.xml中将DataSourceInitializer的部分注销,应为数据库只需要初始化一次。
   第二步将工程目录下的samples .script insert部分删除。否则会主键冲突。
   
总结:
    这个simple的template虽然很简单,但是对于理解spring batch的运行过程还是很有帮助的。至少对spring batch 的几个组件有了初步的了解。
jobRepository jobLauncher job1 step1 reader writer
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表