从Java对象生成Spring bean定义

joe*_*ice 3 java spring xml-serialization

让我们建议我在Spring中定义一个bean:

<bean id="neatBean" class="com..." abstract="true">...</bean>
Run Code Online (Sandbox Code Playgroud)

然后我们有许多客户端,每个客户端的'neatBean'配置略有不同.我们这样做的旧方法是为每个客户端(例如,clientX_NeatFeature.xml)创建一个新文件,其中包含一堆用于此客户端的bean(这些是手工编辑的,代码库的一部分):

<bean id="clientXNeatBean" parent="neatBean">
    <property id="whatever" value="something"/>
</bean>
Run Code Online (Sandbox Code Playgroud)

现在,我希望有一个UI,我们可以动态编辑和重新定义客户端的neatBean.

我的问题是:给定一个neatBean,以及一个可以"覆盖"该bean属性的UI,将这个序列化为XML文件的简单方法就像我们今天[手动]一样?

例如,如果用户为客户端Y设置属性为"17",我想要生成:

<bean id="clientYNeatBean" parent="neatBean">
    <property id="whatever" value="17"/>
</bean>
Run Code Online (Sandbox Code Playgroud)

请注意,将此配置移动到其他格式(例如,数据库,其他架构-xml)是一种选择,但不是对手头问题的真正答案.

Abh*_*kar 7

您可以从此处下载Spring-beans 2.5 xsd 并在其上运行xjc以生成具有JAXB绑定的Java类.然后,您可以在运行时创建Spring-beans对象层次结构(并根据需要对其进行操作),然后使用JAXB Marshaller将其序列化为XML字符串,如Pablojim的答案所示.