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 = '#';