混合和扩展SpringXML配置

混合和扩展SpringXML配置,spring,jaxb,Spring,Jaxb,我有一个SpringMVC项目,使用XML作为主配置,包括注册JAXB类。我现在把它制作成一个多模块的应用程序,并有一个单独的项目,创建一个可选的JAR文件。JAR文件将@Controller和@Service类添加到主MVC项目中,但主项目不依赖于该JAR,我希望保持这种方式,因此我不想为了添加对可选JAR的支持而在主项目中自定义应用程序上下文xml;我只想将这个JAR添加到类路径中 在这个可选的JAR中,我成功地使用了一个带有@Configuration注释的类来在我的应用程序上下文中创建新

我有一个SpringMVC项目,使用XML作为主配置,包括注册JAXB类。我现在把它制作成一个多模块的应用程序,并有一个单独的项目,创建一个可选的JAR文件。JAR文件将@Controller和@Service类添加到主MVC项目中,但主项目不依赖于该JAR,我希望保持这种方式,因此我不想为了添加对可选JAR的支持而在主项目中自定义应用程序上下文xml;我只想将这个JAR添加到类路径中

在这个可选的JAR中,我成功地使用了一个带有@Configuration注释的类来在我的应用程序上下文中创建新的bean,但我现在需要扩展一个现有bean,以添加新的JAXB注释类和包含ObjectFactory类的包,等等

我不知道该怎么做

我尝试过像这样通配符marshaller包:

<bean id="jaxbMarshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
   <property name="packagesToScan" value="com.app.xml.**"/>
</bean>
我还有别的办法吗?理想情况下,我希望在@Configuration类中有一个方法,它只是将新类添加到现有的Jaxb2Marshaller bean中

或者更好的方法是,找到一种让Spring在启动时检测所有带有JAXB注释的类的方法


我正在通过Spring OXM使用Spring 3.2.1和JAXB2,我认为Spring不支持这个用例,但是您可以做的是扩展
Jaxb2Marshaller
,并使用一个实用程序查找所有具有jaxb注释的类,并将它们添加到marshaller

另外,如果您使用的是spring,并且不介意使用它提供的一些特性,那么可以使用类来查找for类。这是spring在内部用于扫描包和子包的内容。

您不能使用
,因为packagesToScan属性不适用于jaxb2Marshaller。。 相反,你可以使用

<property name="contextPath" value="{package name where all classes are generated}"/>

以下作品

<bean id="marshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller" >
<property name="contextPath" value="{package name where all classes are generated}"/>
</bean>


不使用通配符,而是使用逗号分隔的多个包名。因为它不标识通配符,并且属性“packagesToScan”接受字符串数组。是的,这是我试图避免的,因为这意味着我从主applicationContext.xml创建了对这些包的依赖关系。我正在调查其他方法
<bean id="marshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller" >
<property name="contextPath" value="{package name where all classes are generated}"/>
</bean>