1

我已经定义了一个 Spring 应用程序上下文 xml,最终用户将对其进行编辑以添加新的 beans。类似于:

<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 property名称所困扰class

<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 类?

4

1 回答 1

4

Spring 支持创建自定义标签。您需要创建 xsd 模式、NamespaceHandlerm、实现 BeanDefinitionParsers 并通过创建 spring.handlers 和 spring.schemas 特殊文件让 spring 意识到这些。

查看可扩展的 XML 创作

例子:

<beans xmlns declaration goes here>
    <yournamespace:yourcustomtag id="some id">
         <yournamespace:some_other_tag your-custom-attribute="some value" />
    </yournamespace:yourcustomtag>
</beans>
于 2013-03-20T07:25:47.873 回答