我将此添加到我的WAR文件中的Spring配置中:
<import resource="classpath:myapp-custom-settings.xml"/>
这样,用户可以创建myapp-custom-settings.xml
文件(在shared.loader)中列出的文件夹中来修改他们想要的bean而无需解压WAR。 />
非常方便,但是大多数用户都没有这样的文件,在这种情况下会发生FileNotFoundException并且应用程序无法启动:
ERROR: org.springframework.web.context.ContextLoader - Context initialization failed
org.springframework.beans.factory.parsing.BeanDefinitionParsingException:Configuration problem: Failed to import bean definitions from URL location [file:/home/nico/tomcat/conf/myapp-custom-settings.xml]
Offending resource: ServletContext resource [/WEB-INF/spring/root-context.xml]; nested exception is org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from URL [file:/home/nico/tomcat/conf/myapp-custom-settings.xml]; nested exception is
java.io.FileNotFoundException: /home/nico/tomcat/conf/myapp-custom-settings.xml (No such file or directory)
at org.springframework.beans.factory.parsing.FailFastProblemReporter.error(FailFastProblemReporter.java:70)
at org.springframework.beans.factory.parsing.ReaderContext.error(ReaderContext.java:85)
at org.springframework.beans.factory.parsing.ReaderContext.error(ReaderContext.java:76)
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.importBeanDefinitionResource(DefaultBeanDefinitionDocumentReader.java:233)
问题:有没有办法让这个导入失败呢? 我的意思是,如果文件存在则加载文件,但如果文件不存在则跳过。
答案 0 :(得分:6)
诀窍是使用classpath*
代替classpath
。请注意*
星号字符
例如:
<import resource="classpath*:myapp-custom-settings.xml"/>
即使找不到myapp-custom-settings.xml
文件,该应用也会正常启动。