繁体   English   中英

JAXB:如何使用Spring自动生成的类?

[英]JAXB: How to use auto-generated classes from Spring?

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

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

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

剩下的问题是如何在不使用setter方法的情况下填充收集字段?

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

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

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

由于生成的代码在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;
         }

     }

有一个扩展,可以为列表生成设置方法,如下所示:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM