2016-08-18 1 views
0

Я пытаюсь создать простую CRUD-операцию по управлению задачами.Что такое config.properties в Spring и как его использовать

web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
    id="WebApp_ID" version="2.5"> 
    <display-name>SampleApplication</display-name> 

     <welcome-file-list> 
     <welcome-file>html/homepage.html</welcome-file> 

    </welcome-file-list> 

    <servlet> 
     <servlet-name>spring</servlet-name> 
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>spring</servlet-name> 
     <url-pattern>/</url-pattern> 
    </servlet-mapping> 

    <context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>/WEB-INF/spring-servlet.xml</param-value> 
    </context-param> 

    <listener> 
     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
     </listener> 

</web-app> 

весна-servlet.xml

<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:p="http://www.springframework.org/schema/p" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xmlns:mvc="http://www.springframework.org/schema/mvc" 
    xsi:schemaLocation=" 
     http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans.xsd 
     http://www.springframework.org/schema/context 
     http://www.springframework.org/schema/context/spring-context.xsd 
     http://www.springframework.org/schema/mvc 
     http://www.springframework.org/schema/mvc/spring-mvc.xsd"> 

    <context:property-placeholder location="classpath:/config.properties"/> 

    <!-- Spring will search in the bellow paths controller an services annotations--> 
    <context:component-scan base-package="org.itc" /> 
    <mvc:resources mapping="/html/**" location="/html/" /> 
    <mvc:resources mapping="/js/**" location="/js/" /> 
    <mvc:annotation-driven /> 


    <bean id="dataSource" 
     class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
     <property name="driverClassName" value="com.mysql.jdbc.Driver" /> 
     <property name="url" value="jdbc:mysql://localhost:3306/task" /> 
     <property name="username" value="root" /> 
     <property name="password" value="root" /> 
    </bean> 
</beans> 

Im получаю ошибку ниже.

org.springframework.beans.factory.BeanInitializationException: Could not load properties; nested exception is java.io.FileNotFoundException: class path resource [config.properties] cannot be opened because it does not exist 
    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:609) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464) 
    at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:403) 
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306) 
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:106) 
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4842) 
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5303) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1407) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1397) 
    at java.util.concurrent.FutureTask.run(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 
Caused by: java.io.FileNotFoundException: class path resource [config.properties] cannot be opened because it does not exist 
    at org.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java:172) 
    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) 
    ... 16 more 

Что означает отсутствие файла config.properties? Im новый весной и пытается настроить Spring MVC.

+0

файл config.properties необходимо настроить приложение без изменения кода. Это не имеет никакого отношения к весне. Например, строка dbconnection, имя пользователя, пароль и т. Д. – Jens

+0

https://www.mkyong.com/spring/spring-propertyplaceholderconfigurer-example/ –

+0

@Jens Then Почему Im получает FileNotFoundexception? Я попытался создать файл свойств и упомянуть его в файле spring-servlet. Но получить ту же ошибку. – Protagonist

ответ

0

убедитесь, что у вас есть параметры config.properties, и файл помещается в папку/WEB-INF/classes и использует classpath: /config.properties.

1

Вы определили

<context:property-placeholder location="classpath:/config.properties"/> 

То есть, вы хотите, чтобы приложение для загрузки свойств из файла config.properties найден в пути к классам приложения.

Ошибка означает, что файл не найден.

Не зная вашего точного макета, сборки или того, как вы запускаете приложение, я не могу точно указать, где вы должны поместить этот файл, чтобы он был доступен для приложения. Где-то вроде /src/main/resources/ возможно.

Если вам не нужен этот файл или внешние свойства в целом, вы можете прекратить сообщать о том, что вы делаете: Удалить его определение с spring-servlet.xml.

+0

Мне не нужен этот файл config.properties, и я тоже удалил его. Но я получаю то же исключение. – Protagonist

+0

Идите в другую сторону и дайте ему пустой файл для загрузки. – OrangeDog

1

Если у вас нет файла свойств в приложении, удалите эту строку из файла Spring-servlet.xml:

<context:property-placeholder location="classpath:/config.properties"/> 

Вы рассказываете пружину для поиска файла свойств по имени config.properties который не существует.

Если вам нужен файл свойств, создайте config.properties и поместите его в свой путь к классам.

+0

Я удалил его из файла Spring-servlet.xml все еще Я получаю то же исключение – Protagonist

+1

Вы уверены? я скопировал ваши xml-файлы в моей рабочей области и добавил строку * context: property *, я получил ошибку, но когда я удалю, она работает так, как ожидалось. Вы перезапустили сервер? очистить и построить проект? – amicoderozer

+0

Теперь его работа, спасибо – Protagonist

1

config.properties, используемый для сохранения прикладных переменных (свойств). Я считаю, это очень полезно, потому что:

  • Этот файл, как упоминалось может хранить некоторые начальные данные приложения cofig, как подключение дб.
  • Вы можете создавать свои собственные свойства и вводить их значения в приложении Spring. Также эти свойства могут быть заданы с помощью команды запуска приложения (аргументы командной строки)
  • Вы можете скомпилировать свое приложение с помощью config.properties внутри, но при развертывании создайте config.properties вне компилируемого приложения, а Spring будет использовать свойства вместо него, а не скомпилированные файл.
  • Вы можете предварительно настроить профили, и они помогут в разработке, тестировании и этапе развертывания, поскольку каждый компонент может быть помечен профилем и будет вводиться в зависимости от режима запуска приложения.

Это функции, которые я использую, и может быть намного больше. На самом деле я не нахожу описания инструкции о config.properties. Все это упоминалось в разных местах весны.

Update

Попробуйте Spring бутсу - он содержит Spring MVC, Hibernate, и я нашел много хороших примеров для начинающих. Он был создан для уменьшения начальных настроек конфигурации.

0

Если вы собираетесь использовать файл свойств, вам придется объявить bean org.springframework.beans.factory.config.PropertyPlaceholderConfigurer в файле Spring-servlet.xml.

Ваш Родник-servlet.xml:

<bean 
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 

    <property name="location"> 
     <value>classpath:config.properties</value> 
    </property> 
</bean> 

ваш DataSource фасоль будет выглядеть следующим образом.

<bean id="dataSource" 
    class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
    <property name="driverClassName" value="com.mysql.jdbc.Driver" /> 
    <property name="url" value="db.url.property" /> 
    <property name="username" value="db.user" /> 
    <property name="password" value="db.password" /> 
</bean> 

Вы должны иметь config.properties в своем пути к классу, содержащему следующие свойства.

Ваш config.properties

db.url.property=jdbc:mysql://localhost:3306/task 
db.user=root 
db.password=root 
+0

Где я должен разместить файл config.properties? – Protagonist

+0

Я всегда придерживался конвенции в проекте java, чтобы иметь две исходные папки «src/main/java» (содержащие все java-файлы) и «src/main/resources» (содержит все файлы ресурсов, такие как config.properties). Вы можете проверить исходный код примера mkyong mkyong.com/spring/spring-propertyplaceholderconfigurer-examp le. – Manzar

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