2

我正在使用xjcXSD. 生成的类仅包括集合类型的 getter 方法,例如List,但不包括 setter 方法。我如何将这些生成的类用作 bean 中的 bean Spring Framework,即如何使用applicationContext.xml中的数据填充这些字段?

作为对“duffymo”和“fatih”的回复:实际上我可以告诉 Spring 使用JAXB ObjectFactory及其工厂方法来创建 bean,

<bean id="myFactory" class="generated.ObjectFactory" />
<bean id="myBean" factory-bean="myFactory" factory-method="createMyBeanMethod" />

剩下的问题是如何在没有 setter 方法的情况下填充集合字段?

4

5 回答 5

0

由于生成的代码在 JAXB 的控制之下,您将无法做到这一点。但是,一种解决方法可能是:

假设 JAXB 为您创建了一个 Person 类,生成的属性将受到保护。

您可以创建扩展 Person 类的新类 MyPerson 并将 setter 方法放在 MyPerson 类中。因此,您可以从 bean 配置文件初始化属性,并且生成的代码不会覆盖您的更改。由于我不知道详细信息,因此对于您的情况,这可能是也可能不是合适的解决方法。

     generated :
     public class Person{
          protected List<Something> somethingList;
          .
          .
     }




     class MyPerson extends Person{
         public void setList(List<Something> somethingList){
             this.somethingList= somethingList;
         }

     }
于 2011-01-13T11:46:59.823 回答
0

有一个扩展来为列表生成集合方法,如下所示:

尽管由于引用的站点已重新组织,给定的链接似乎已损坏。

值得向 java.net 发布一个问题以获取 collection-setter-injector 的位置。

于 2011-01-13T14:26:55.557 回答
0

我不相信你可以,因为它们是在 JAXB 的控制下创建的,而不是 Spring bean 工厂。

于 2011-01-13T11:18:20.303 回答
0

您可以使用该字段而不是 getter/setter。

于 2011-01-13T11:21:55.610 回答
0

您可以对这些 bean 使用基于 Java 的配置xjc-generated,而不是在 applicationContext.xml中填充您的 bean。

于 2012-06-18T12:52:54.963 回答