当我使用ref属性定义一个tasklet时,一切都很好:
<step id="unzipFiles_010_014" next="verifyXmlSignatures_010_014">
<tasklet ref="unzipTasklet_010_014" />
</step>
但是,在某些情况下,我想直接将bean定义为嵌套bean,例如:
<step id="unzipFiles_010_014" next="verifyXmlSignatures_010_014">
<tasklet>
<bean scope="step" class="some.package.UnZipTasklet">
<property name="file" ref="any.file" />
</bean>
</tasklet>
</step>
现在我收到一个奇怪的错误:
cvc-complex-type.2.4.a: Invalid content was found starting with
element 'bean'. One of '{"http://
www.springframework.org/schema/batch":chunk,
"http://www.springframework.org/schema/
batch":transaction-attributes,
"http://www.springframework.org/schema/batch":no-rollback-exception-classes,
"http://www.springframework.org/schema/batch":listeners,
"http://www.springframework.org/schema/ beans":bean,
"http://www.springframework.org/schema/beans":ref}' is expected.
这是一个豆子,不是吗?
在定义验证器时,我得到了同样的奇怪行为( DefaultJobParametersValidator )。
答案 0 :(得分:0)
可能适用于您的批处理:名称空间。
例如:
<batch:step id="copyToWorkdir" next="concatStrings">
<batch:tasklet>
<bean class="your.tasklet.Class" scope="step">
<property name="inFile" value="xxx" />
<property name="outFile" value="xxx" />
</bean>
</batch:tasklet>
</batch:step>
答案 1 :(得分:0)
你也可以这样做:
<step id="unzipFiles_010_014" next="verifyXmlSignatures_010_014">
<tasklet ref="unZipTasklet" scope="step">
</tasklet>
</step>
使用像之前的bean:
<bean id="unZipTasklet" class="some.package.UnZipTasklet">
<property name="file" ref="any.file" />
</bean>
但就像maxhax所说的那样,它只是一个命名空间问题...... 尝试使用maxhas和此命名空间配置的示例:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:batch="http://www.springframework.org/schema/batch"
xsi:schemaLocation=
"http://www.springframework.org/schema/batch http://www.springframework.org/schema/batch/spring-batch-2.1.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">