18.3. 批量属性注入


JBoss EAP batch-jberet 子系统的一项功能是能够让作业 XML 文件中定义的属性,注入到批处理工件类中的字段。可以利用 @Inject 和 @ BatchProperty 注释,将作业 XML 文件中定义的属性注入到字段中。

inject 字段可以是以下任一 Java 类型:

  • java.lang.String
  • java.lang.StringBuilder
  • java.lang.StringBuffer
  • 任何原语类型及其打包程序类型:

    • 布尔值,布尔值
    • int, Integer
    • double,Double
    • ,长
    • Char、character
    • 浮点值Float
    • Short
    • 字节, Byte
  • java.math.BigInteger
  • java.math.BigDecimal
  • java.net.URL
  • java.net.URI
  • java.io.File
  • java.util.jar.JarFile
  • java.util.Date
  • java.lang.Class
  • java.net.Inet4Address
  • java.net.Inet6Address
  • java.util.List, List<?>, List<String>
  • java.util.Set,Set<?> , Set<String>
  • java.util.Map, Map<?, ?>, Map<String, String>, Map<String, ?>
  • java.util.logging.Logger
  • java.util.regex.Pattern
  • javax.management.ObjectName

还支持以下数组类型:

  • java.lang.String[]
  • 任何原语类型及其打包程序类型:

    • boolean[], Boolean[]
    • int[]Integer[]
    • double[], Double[]
    • 长[]Long[]
    • char[]、Cha racter[]
    • float[], Float[]
    • short[], Short[]
    • 字节[]Byte[]
  • java.math.BigInteger[]
  • java.math.BigDecimal[]
  • java.net.URL[]
  • java.net.URI[]
  • java.io.File[]
  • java.util.jar.JarFile[]
  • java.util.zip.ZipFile[]
  • java.util.Date[]
  • java.lang.Class[]

下面是使用批处理属性注入的一些示例:

将数字注入到批处理类中,作为各种类型

示例:作业 XML 文件

<batchlet ref="myBatchlet">
    <properties>
        <property name="number" value="10"/>
    </properties>
</batchlet>
Copy to Clipboard Toggle word wrap

示例:Artifact Class

@Named
public class MyBatchlet extends AbstractBatchlet {
    @Inject
    @BatchProperty
    int number;  // Field name is the same as batch property name.

    @Inject
    @BatchProperty (name = "number")  // Use the name attribute to locate the batch property.
    long asLong;  // Inject it as a specific data type.

    @Inject
    @BatchProperty (name = "number")
    Double asDouble;

    @Inject
    @BatchProperty (name = "number")
    private String asString;

    @Inject
    @BatchProperty (name = "number")
    BigInteger asBigInteger;

    @Inject
    @BatchProperty (name = "number")
    BigDecimal asBigDecimal;
}
Copy to Clipboard Toggle word wrap

将数字序列注入到批处理类中,作为各种阵列

示例:作业 XML 文件

<batchlet ref="myBatchlet">
    <properties>
        <property name="weekDays" value="1,2,3,4,5,6,7"/>
    </properties>
</batchlet>
Copy to Clipboard Toggle word wrap

示例:Artifact Class

@Named
public class MyBatchlet extends AbstractBatchlet {
    @Inject
    @BatchProperty
    int[] weekDays;  // Array name is the same as batch property name.

    @Inject
    @BatchProperty (name = "weekDays")  // Use the name attribute to locate the batch property.
    Integer[] asIntegers;  // Inject it as a specific array type.

    @Inject
    @BatchProperty (name = "weekDays")
    String[] asStrings;

    @Inject
    @BatchProperty (name = "weekDays")
    byte[] asBytes;

    @Inject
    @BatchProperty (name = "weekDays")
    BigInteger[] asBigIntegers;

    @Inject
    @BatchProperty (name = "weekDays")
    BigDecimal[] asBigDecimals;

    @Inject
    @BatchProperty (name = "weekDays")
    List asList;

    @Inject
    @BatchProperty (name = "weekDays")
    List<String> asListString;

    @Inject
    @BatchProperty (name = "weekDays")
    Set asSet;

    @Inject
    @BatchProperty (name = "weekDays")
    Set<String> asSetString;
}
Copy to Clipboard Toggle word wrap

将类属性注入批处理类

示例:作业 XML 文件

<batchlet ref="myBatchlet">
    <properties>
        <property name="myClass" value="org.jberet.support.io.Person"/>
    </properties>
</batchlet>
Copy to Clipboard Toggle word wrap

示例:Artifact Class

@Named
public class MyBatchlet extends AbstractBatchlet {
    @Inject
    @BatchProperty
    private Class myClass;
}
Copy to Clipboard Toggle word wrap

为属性注入注解的字段分配默认值

如果作业 XML 文件中未定义目标批处理属性,您可以为工件 Java 类中的字段分配默认值。如果将 target 属性解析为有效的值,它将注入到该字段;否则,不会注入值,并使用默认的字段值。

示例:Artifact Class

/**
 Comment character. If commentChar batch property is not specified in job XML file, use the default value '#'.
 */
@Inject
@BatchProperty
private char commentChar = '#';
Copy to Clipboard Toggle word wrap

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat