【发布时间】:2013-03-14 11:27:48
【问题描述】:
我有一个使用 XML 作为主要配置的 Spring MVC 项目,包括注册 JAXB 类。我现在将它制作成一个多模块应用程序,并有一个单独的项目来创建一个可选的 JAR 文件。 JAR 文件将 @Controller 和 @Service 类之类的东西添加到主 MVC 项目中,但主项目不依赖于该 JAR,我想保持这种方式,所以我不想自定义应用程序主项目中的上下文 xml,以添加对可选 JAR 的支持;我只想将该 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>
但这似乎不起作用,因为我得到:
javax.servlet.ServletException: Unable to locate object to be marshalled in model
我可以采取其他方法吗?理想情况下,我想在我的 @Configuration 类中有一个方法,它只是将新类添加到现有的 Jaxb2Marshaller bean...
或者更好的是,找到一种方法让 Spring 在启动时检测所有带有 JAXB 注释的类...
我通过 Spring OXM 使用 Spring 3.2.1 和 JAXB2
【问题讨论】:
-
而不是使用通配符使用多个包名用逗号分隔。因为它不识别通配符并且属性“packagesToScan”接受String数组。
-
是的,这是我试图避免的,因为这意味着我从我的主 applicationContext.xml 创建了对这些包的依赖。我正在研究其他方法