I am trying to use Jaxb2Marshaller to marshal a set of java classes using spring. I know this can be done using the following code
<bean id="jaxbMarshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
<property name="classesToBeBound">
<list>
<value>com.example.test1</value>
<value>com.example.test2</value>
</list>
</property>
</bean>
What I would like to do is instead of specifying a list of classes, I would like to specify just the package name containing all the classes ( in the above case com.example).
Does anyone know of a way to do this, or any other way which does not require me to list all the classes. any help would be appreciated !
Thanks.
From Spring 3.1 (i think) you can use also the packagesToScan property, which accepts wildcards. It just doesn't work with elements without the @XmlRootElement
annotation, just like the contextPath property. These need generated object-factory.
Could look like:
<property name="packagesToScan">
<list>
<value>com.test.*</value>
<value>com.*.test</value>
</list>
</property>
You could set the contextPath with the following syntax:
<bean id="jaxbMarshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
<property name="contextPath" value="com.example"/>
</bean>
If you are using the new version of JAXB then you can use something like this in your application context if you add the oxm namespace to your xml file.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:oxm="http://www.springframework.org/schema/oxm"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/oxm
http://www.springframework.org/schema/oxm/spring-oxm-3.1.xsd">
<oxm:jaxb2-marshaller id="jaxbMarshaller" contextPath="com.example"/>
<!-- other beans -->
</beans>
I have a production level program running with these, so let me know if you have any more questions.
Good Luck.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With