Java 直接在Spring应用程序上下文中嵌入XML配置
我有一个Java对象,它能够在给定XML配置描述的情况下对自身进行配置(它还需要其他描述,但我目前对XML感兴趣)。我想知道是否可以将XML描述直接嵌入到Spring应用程序上下文描述中。我在想象这样的事情:Java 直接在Spring应用程序上下文中嵌入XML配置,java,xml,spring,configuration,Java,Xml,Spring,Configuration,我有一个Java对象,它能够在给定XML配置描述的情况下对自身进行配置(它还需要其他描述,但我目前对XML感兴趣)。我想知道是否可以将XML描述直接嵌入到Spring应用程序上下文描述中。我在想象这样的事情: <bean id="myXMLConfiguredBean" class="com.example.Foo"> <constructor-arg type="xml"> <myconfig xmlns="http://example.com/foo
<bean id="myXMLConfiguredBean" class="com.example.Foo">
<constructor-arg type="xml">
<myconfig xmlns="http://example.com/foo/config">
<bar>42</bar>
</myconfig>
</constructor-arg>
</bean>
42
但我不知道这是否可能,或者类似的事情。我意识到我可以将myconfig嵌入CDATA部分,但这似乎有点难看。Spring允许
通过以下方式包含任何XML:
<xsd:element name="constructor-arg">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="description" minOccurs="0" />
<xsd:choice minOccurs="0" maxOccurs="1">
<xsd:element ref="bean" />
<xsd:element ref="ref" />
<xsd:element ref="idref" />
<xsd:element ref="value" />
<xsd:element ref="null" />
<xsd:element ref="list" />
<xsd:element ref="set" />
<xsd:element ref="map" />
<xsd:element ref="props" />
<!-- Any XML -->
<xsd:any namespace="##other" processContents="strict" />
</xsd:choice>
</xsd:sequence>
...
</xsd:complexType>
</xsd:element>
...
其中,processContents
属性可以具有以下属性之一:
严格:必须有可用项的顶级声明,或者该项必须具有xsi:type
,并且该项必须是有效的
因此,只要您的配置XML有一个模式,并且您正确地导入了它,这应该是可行的
然后,您需要使用
希望这有帮助如果bean有一个属性告诉它配置文件的位置,并且它从类路径(或文件系统上的绝对位置)加载配置,那么它不是更干净吗?这样,您的Spring配置看起来更干净,编辑bean的XML配置更容易,因为它位于单独的文件中 也许您甚至可以使用Spring应用程序上下文的资源特性来实现这一点