为什么我的spring bean中需要前缀'batch:'

时间:2013-07-09 15:26:57

标签: xml spring xml-namespaces spring-batch

我在Spring Batch示例中随处可见标签所在的位置(即<job></job>)。但是在我的xml文件中,我必须包含'batch'。例如<batch:job></batch:job>

为什么?这是一个版本的东西吗?我想通过丢弃批量来稀释标签:如果可能的话,在所有标签中都可以。

2 个答案:

答案 0 :(得分:8)

batchhttp://www.springframework.org/schema/batch命名空间的XML文件中的别名。在XML开始时你会有类似的东西:

xmlns:batch="http://www.springframework.org/schema/batch" 

这意味着无论何时使用batch:为元素添加前缀,您都要指定该元素是Spring定义的元素。这对于消除可能的含糊不清是必要的(可能还有其他关于定义<job>元素的框架)。

可以为XML文档中的所有元素定义默认命名空间,这样如果没有前缀的命名空间,它将是声明所引用的命名空间。此默认命名空间使用xmlns="..."属性定义,通常分配给http://www.springframework.org/schema/beans命名空间(<beans>元素和更多基本类型所在的位置)。

你可以:

1)如果要清理,请将batch更改为更短的内容,例如b

<beans ... xmlns:b="http://www.springframework.org/schema/batch">
    ...
    <b:job></b:job>
    ...
</beans>

2)使batch成为默认命名空间(使用xmlns="http://www.springframework.org/schema/batch")并在需要时使用beans命名空间和其他命名空间。您甚至可以将所有批处理元素声明为单独的xml文件,默认情况下使用此命名空间,并在主<beans:import>中将其applicationContext.xml声明。

<beans:beans xmlns="http://www.springframework.org/schema/batch" 
     xmlns:beans="http://www.springframework.org/schema/beans">

    <job>...</job>
    <job>...</job>

</beans:beans>

答案 1 :(得分:0)

您可以将xmlns =“http://www.springframework.org/schema/batch”添加到根元素并避免使用前缀,例如:

<flow id="flowId" xmlns="http://www.springframework.org/schema/batch"><step id=""/><step id=""/></flow>