18.3. 배치 속성 삽입

JBoss EAP batch-jberet 하위 시스템의 기능은 배치 아티팩트 클래스의 필드에 삽입된 작업 XML 파일에 속성을 정의하는 기능입니다. 작업 XML 파일에 정의된 속성은 @Inject 및 @ BatchProperty 주석을 사용하여 필드에 삽입할 수 있습니다.

주입 필드는 다음 Java 유형 중 하나일 수 있습니다.

  • java.lang.String
  • java.lang.StringBuilder
  • java.lang.StringBuffer
  • 기본 유형 및 래퍼 유형:

    • 부울,부울
    • int,정수
    • 두 배 , 주셔서 감사합니다.
    • ,
    • 문자,문자
    • 유동,유동
    • 음,
    • 바이트,바이트
  • 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[], 부울[]
    • int[], Integer[]
    • double[], but []
    • long[], Long[]
    • characters[], 문자[]
    • floating[], Float[]
    • short[], short[]
    • byte[], 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>

예제: 아티팩트 클래스

@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;
}

임의의 배열로 Batchlet 클래스에 숫자 시퀀스 삽입

예제: 작업 XML 파일

<batchlet ref="myBatchlet">
    <properties>
        <property name="weekDays" value="1,2,3,4,5,6,7"/>
    </properties>
</batchlet>

예제: 아티팩트 클래스

@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;
}

배치 클래스에 클래스 속성 삽입

예제: 작업 XML 파일

<batchlet ref="myBatchlet">
    <properties>
        <property name="myClass" value="org.jberet.support.io.Person"/>
    </properties>
</batchlet>

예제: 아티팩트 클래스

@Named
public class MyBatchlet extends AbstractBatchlet {
    @Inject
    @BatchProperty
    private Class myClass;
}

속성 주입을 위해 주석이 있는 필드에 기본값 할당

타겟 배치 속성이 작업 XML 파일에 정의되지 않은 경우 아티팩트 Java 클래스의 필드에 기본값을 할당할 수 있습니다. target 속성이 유효한 값으로 확인되면 해당 속성이 해당 필드에 삽입됩니다. 그렇지 않으면 값이 삽입되지 않고 기본 필드 값이 사용됩니다.

예제: 아티팩트 클래스

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