Nic*_*oul 0 import spring file spring-bean
我将此添加到WAR文件中的Spring配置中:
<import resource="classpath:myapp-custom-settings.xml"/>
Run Code Online (Sandbox Code Playgroud)
这样,用户可以创建一个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)
Run Code Online (Sandbox Code Playgroud)
问题:有没有办法使这个导入失败?
我的意思是,加载文件(如果存在),但如果文件不存在则跳过.
诀窍是使用classpath*而不是classpath.请注意*星号字符.
例:
<import resource="classpath*:myapp-custom-settings.xml"/>
Run Code Online (Sandbox Code Playgroud)
即使没有myapp-custom-settings.xml找到文件,该应用程序现在也会正常启动.
| 归档时间: |
|
| 查看次数: |
2042 次 |
| 最近记录: |