2013-04-11 32 views
1

我正在使用Spring 3.1.x和CXF 2.6.1進行REST服務。我使用jaxbXmlProvider,如下所示。Spring - Jaxb2Marshaller - 如何使用註釋自動添加JAXB2類

<jaxrs:server ... 
<jaxrs:providers> 
    <ref bean="jaxbXmlProvider" /> 
</jaxrs:providers> 
... 
</jaxrs:server> 


<bean id="jaxbXmlProvider" class="org.apache.cxf.jaxrs.provider.JAXBElementProvider"> 
    <property name="jaxbElementClassNames" ref="elements" /> 
</bean> 


<util:list id="elements"> 
    <value>com.model.City</value> 
    <value>com.model.Cities</value> 
</util:list> 

我想用JAXB2-編組用於掃描所有的POJO對象在一個包(com.model)。任何使用幫助表示讚賞。

回答

1

可以調用提供類列表中其他bean的方法是這樣的:

<property name="jaxbElementClassNames" value="#{ myBean.classNamesFromPackage}"/>

配置爲myBean這需要包名作爲屬性,具有getClassNamesFromPackage方法:

<bean id="myBean" class="x.y.z.MyBean">
<property name="packageName" value="com.model" />
</bean>

在MyBean的getClassNamesFromPackage方法中,可以使用How do I read all classes from a Java package in the classpath?中建議的代碼。

+0

感謝您的回覆。我試圖充分利用Spring jaxb2-marshaller。 。不知道如何適應CXF – pingu 2013-04-12 20:40:49

+0

請參閱以下http://cxf.apache.org/docs/jax-rs-data-bindings.html:「...從CXF 2.7.2開始,這也可以很好地工作對於包級別的上下文 - 添加「useSingleContextForPackages」屬性以獲取創建的單個上下文始終用作packagecontext。「我沒有嘗試過,但它看起來像你正在尋找的東西。 – Ritesh 2013-04-12 22:41:50

相關問題