2016-08-27 4 views
1

У меня есть database.properties файл с определенными свойствами. А также приложения context.xml файла, в котором я пытаюсь поставить эти значения databaseRepository свойств компоненты:Использование свойства placeholder location

<context:property-placeholder location="file:property_placeholder/database.properties"/> 
<bean id="databaseRepository" class="property_placeholder.DatabaseRepository"> 
    <property name="host" value="${host}"/> 
    <property name="port" value="${port}"/> 
    <property name="user" value="${user}"/> 
    <property name="password" value="${password}"/> 
</bean> 

, но когда я пытаюсь запустить приложение и читать базы данных. свойства файл я получаю следующие ошибки:

Exception in thread "main" org.springframework.beans.factory.BeanInitializationException: Could not load properties; nested exception is java.io.FileNotFoundException: property_placeholder\database.properties (The system cannot find the path specified) 
at org.springframework.context.support.PropertySourcesPlaceholderConfigurer.postProcessBeanFactory(PropertySourcesPlaceholderConfigurer.java:151) 
at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:265) 
at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:162) 
at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:606) 
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:462) 
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139) 
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83) 
at property_placeholder.MainSpring.main(MainSpring.java:9) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:498) 
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147) 
Caused by: java.io.FileNotFoundException: property_placeholder\database.properties (The system cannot find the path specified) 
at java.io.FileInputStream.open0(Native Method) 
at java.io.FileInputStream.open(FileInputStream.java:195) 
at java.io.FileInputStream.<init>(FileInputStream.java:138) 
at java.io.FileInputStream.<init>(FileInputStream.java:93) 
at sun.net.www.protocol.file.FileURLConnection.connect(FileURLConnection.java:90) 
at sun.net.www.protocol.file.FileURLConnection.getInputStream(FileURLConnection.java:188) 
at org.springframework.core.io.UrlResource.getInputStream(UrlResource.java:168) 
at org.springframework.core.io.support.EncodedResource.getInputStream(EncodedResource.java:143) 
at org.springframework.core.io.support.PropertiesLoaderUtils.fillProperties(PropertiesLoaderUtils.java:98) 
at org.springframework.core.io.support.PropertiesLoaderSupport.loadProperties(PropertiesLoaderSupport.java:175) 
at org.springframework.core.io.support.PropertiesLoaderSupport.mergeProperties(PropertiesLoaderSupport.java:156) 
at org.springframework.context.support.PropertySourcesPlaceholderConfigurer.postProcessBeanFactory(PropertySourcesPlaceholderConfigurer.java:142) 
... 12 more 

Вот как файлы структура выглядит следующим образом: structure

Что я здесь делаю неправильно?

+0

Я предлагаю попробовать 'classpath:' вместо 'file:', так как ваш файл находится в пути к классам, а не снаружи в папке. –

ответ

1

Ошибка на самом деле FileNotFoundException: property_placeholder\database.properties, поэтому убедитесь, что вы указали правильный путь к вашему файлу свойств.

Здесь правильный путь может быть classpath:property_placeholder/database.properties в соответствии с вашей структурой.

Вы должны поместить файл database.properties под resources/property_placeholder

+0

Спасибо! Это было полезно, но мне также пришлось скопировать файл database.properties в целевую подпапку. –

1

использования этой конфигурации в файл контекста приложения: положить ваши свойства файла ресурсов.

<bean 
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
<property name="location"> 
<value>classpath:database.properties</value> 
</property> 
</bean> 
+0

Спасибо. Когда я переместил папку свойств в папку ресурсов, мне не нужно было ее вручную копировать в нужную целевую подпапку. –

Смежные вопросы