2017-01-05 9 views
0

Я добавил это в моей конфигурации Весна в моей WAR файл:Весна импорта ресурсов: Пропустить, если файл не существует

<import resource="classpath:myapp-custom-settings.xml"/> 

Таким образом, пользователи могут создавать myapp-custom-settings.xml файл (в папке, указанной в shared.loader), чтобы изменить фасоль, которую они хотят, без необходимости разархивировать 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) 

ВОПРОС: Есть ли способ, чтобы сделать этот импорт отказоустойчивыми?
Я имею в виду, загрузите файл, если он существует, но пропустите, если он не существует.

ответ

2

Хитрость заключается в использовании classpath* вместо classpath. Обратите внимание на символ звездочки *.
Пример:

<import resource="classpath*:myapp-custom-settings.xml"/> 

приложение теперь будет начать нормально, даже если не myapp-custom-settings.xml файл не найден.

+0

Удивительный мужчина! Благодаря! –