【发布时间】:2015-03-27 18:49:04
【问题描述】:
在我的多模块 Spring MVC Web 应用程序中,我添加了一个模块,它是一种 API(不是 Spring 管理的)。 API 有一个配置文件,即 config.xml(位于 /main/java/resource 中)。我将 API 作为依赖项注入到 spring 托管模块中。
<bean id="conf" class="a.b.c.ConfLoader" factory-method="load">
<constructor-arg type="java.lang.String" value="config.xml" />
</bean>
<bean id="builder" class="a.b.c.Builder">
<constructor-arg ref="conf" />
</bean>
使用 JAXB Unmarshalling,将 XML 转换为 Object
public static Configuration load(String configXML) {
JAXBElement<Configuration> unmarshalledObject = null;
try {
JAXBContext jaxbContext = JAXBContext
.newInstance(ObjectFactory.class);
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
unmarshalledObject = (JAXBElement<Configuration>) unmarshaller
.unmarshal(Thread.currentThread().getContextClassLoader().getResourceAsStream(configXML));
} catch (JAXBException e) {
LOGGER.error(e.getLocalizedMessage(), e);
}
Configuration config = new Configuration();
if (unmarshalledObject != null) {
config = unmarshalledObject.getValue();
}
return config;
}
只要 config.xml 驻留在应用程序的 (API) 资源文件夹 (/main/java/resource) 下,它就可以正常工作。
我需要将 config.xml 保留在应用程序之外,因为它具有特定于环境的配置。
我试图将 config.xml 保存到 tomcat 的 conf 目录中,但它没有被加载。我需要从应用程序以外的其他位置加载它。
任何指导和帮助都将是非常可观的。
【问题讨论】:
-
你可以在启动时通过命令行将它添加到类路径吗? (我认为这会放在 setenv.bat / .sh 中)
标签: java xml spring spring-mvc jaxb