[英]JAXB: How to use auto-generated classes from Spring?
我正在使用xjc
从XSD
生成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.