使用/转换XML文件到Spring bean定义

时间:2013-03-20 07:03:15

标签: java xml spring

我已经定义了一个Spring应用程序上下文xml,最终用户将对其进行编辑以添加新bean。如下所示:

<bean name="myBeanName1" class="com.xxx.Yyy">
    <property name="type" value="type1" />
    <property name="name" value="name1" />
    <property name="arguments" value="arg1" />
</bean>

<bean name="myBeanName2" class="com.xxx.Yyy">
    <property name="type" value="type2" />
    <property name="name" value="name2" />
    <property name="arguments" value="arg2" />
</bean>

.
.
.

现在我被要求将其更改为正常的xml,以便用户不会被bean propertyclass名称困扰:

<def name="Name1">
    <type>type1</type>
    <argument>arg1</argument
</def>

<def name="Name2">
    <type>type2</type>
    <argument>arg2</argument
</def>

由于我的代码正在使用bean,我如何使用最少的代码更改来使用新的xml,以便它像以前一样转换为bean定义并且事情像以前一样工作?

我不知道Spring是否有开箱即用的解决方案。我认为将样式表应用于新的xml来创建我的旧bean。还有其他更好/更优雅的解决方案吗?

编辑:既然用户输入不在bean内部,是否可以使用新的xml注入@Component类?

1 个答案:

答案 0 :(得分:4)

Spring支持创建自定义标记。您需要创建xsd模式,NamespaceHandlerm,实现BeanDefinitionParsers并通过创建spring.handlers&amp;使Spring知道这些。 spring.schemas特殊文件。

查看Extensible XML authoring

示例:

<beans xmlns declaration goes here>
    <yournamespace:yourcustomtag id="some id">
         <yournamespace:some_other_tag your-custom-attribute="some value" />
    </yournamespace:yourcustomtag>
</beans>