我已经定义了一个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
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类?
答案 0 :(得分:4)
Spring支持创建自定义标记。您需要创建xsd模式,NamespaceHandlerm,实现BeanDefinitionParsers并通过创建spring.handlers&amp;使Spring知道这些。 spring.schemas特殊文件。
示例:
<beans xmlns declaration goes here>
<yournamespace:yourcustomtag id="some id">
<yournamespace:some_other_tag your-custom-attribute="some value" />
</yournamespace:yourcustomtag>
</beans>