2013-03-20 65 views
1

我已经定义了一个Spring应用程序上下文XML将最终用户进行编辑,以增加新的beans.Something,如:/XML文件转换成一个Spring 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,使用户不会通过beanpropertyclass的名字被人打扰:

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

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

由于我的代码使用的是绿豆,我该如何使用新的XML用最少的代码改变,使其转化为一个早期的bean定义事情和以前一样工作?

我不知道Spring是否有这个开箱即用的解决方案。我认为应用样式表到新的xml来创建我的旧bean。任何其他更好/优雅的解决方案呢?

编辑:现在,用户输入不再在bean内部,是否有可能使用新的xml注入到@Component类?

回答

4

Spring支持创建自定义标签。您需要创建xsd模式NamespaceHandlerm,实现BeanDefinitionParsers,并通过创建spring.handlers spring.shandmas特殊文件来使spring了解这些。

看一看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> 
+0

+1会检查了这一点。但看起来好像有一些编码需要实现这一点。这也会将xml更改为不同的格式,尽管很小? – rajesh 2013-03-20 09:19:03

+0

是的,它会将xml更改为不同的格式。示例在答案中更新。 – 2013-03-20 09:35:48