JSR352支持 - Batch Properties
优质
小牛编辑
131浏览
2023-12-01
12.4 Batch Properties
12.4.1 Property 支持
JSR-352 允许在 Job, Step 和其他 batch 组件级别配置 properties 信息,在 JSL 文件中通过如下的方式配置 Batch properties:
<properties>
<property name="propertyName1" value="propertyValue1"/>
<property name="propertyName2" value="propertyValue2"/>
</properties>
Properties 也可以配置在所有批处理组件中.
12.4.2 @BatchProperty
注解
在批处理组件中 可以通过组件的方式来引用 Properties, 分别是 @BatchProperty
和 @Inject
(两个注解需同时要指定). 根据 JSR-352 的定义, propertie 属性域必须是 String 类型. 类型转换取决于代码实现(Any type conversion is up to the implementing developer to perform).
可以像前面所描述的那样定义属性,然后通过类似下面 javax.batch.api.chunk.ItemReader
组件的这种方式来使用:
public class MyItemReader extends AbstractItemReader {
@Inject
@BatchProperty
private String propertyName1;
...
}
属性域 “propertyName1” 的值会被设置为 “propertyValue1”
12.4.3 Property 替换
Property 替换是由操作符和简单条件表达式实现的. 常用的方式是 #{operator['key']}
.
支持以下操作符:
- jobParameters - 启动/重启 Job 时的参数.
- jobProperties - JSL中配置在 job 级别的属性.
- systemProperties - 命名的系统属性.
partitionPlan - 在分区 step 中访问分区计划的命名属性.
{jobParameters[‘unresolving.prop’]}?:#{systemProperties[‘file.separator’]}
左边是希望设置的值,右边是默认值. 在这里, 因为解析不到 #{jobParameters['unresolving.prop']}
的值, 所以生效的会是 system property file.separator
. 如果一个都没解析到, 则会返回空字符串(empty String). 可以使用多个条件, 使用英文分号 ‘;
‘分隔.