Spring Batch Getting Started

首先建立工程:
   【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

你可能感兴趣的:(spring,数据结构,sql,SQL Server,HSQLDB)