У меня есть приложение Spring 4 MVC, в котором я хотел бы передать в среде (профиле) из командной строки и прочитать при запуске соответствующие файлы .properties
для конкретной среды.Настройка среды/профиля в Spring MVC
Эти файлы свойств по существу содержат разные строки подключения jdbc
, поэтому каждая среда может подключаться к правильной базе данных.
Я все еще изучаю Весну и Яву в целом, поэтому трудно понять это.
В web.xml
определяет 3 среды/профили
<context-param>
<param-name>spring.profiles.active</param-name>
<param-value>test, dev, prod</param-value>
</context-param>
У меня есть 3 среды определенных файлы в каталоге ресурсов. Мое понимание заключается в том, что Spring попытается найти соответствующий файл, относящийся к конкретной среде, и общий файл application.properties
(если он существует, а он отсутствует), чтобы вернуться.
> \ls src/main/webapp/resources/properties/
application-dev.properties application-prod.properties application-test.properties
Каждый файл довольно прост, только параметры подключения jdbc для этой среды. Пример:
jdbc.driverClassName=org.postgresql.Driver
jdbc.url=jdbc:postgresql://localhost:5432/galapagos
jdbc.username=foo
jdbc.password=
Наконец в моем сервлета файл spring-web-servlet.xml
, я прочитал свойства файла приложения и использовать его, чтобы установить соединение
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
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/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd">
....
<!-- Database/JDBC -->
<beans:bean
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<beans:property name="location" value="resources/properties/application.properties" />
</beans:bean>
<beans:bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<beans:property name="driverClassName" value="${jdbc.driverClassName}" />
<beans:property name="url" value="${jdbc.url}" />
<beans:property name="username" value="${jdbc.username}" />
<beans:property name="password" value="${jdbc.password}" />
</beans:bean>
....
</beans:beans>
Это erroring вне, потому что он пытается искать resources/properties/application.properties
, который не существует. Но я не уверен, что еще там положить. Как заставить его динамически читать файл правильной среды при запуске?
Я видел несколько примеров like this one с помощью контекстных слушателей, но честно говоря, я до сих пор учусь Spring MVC и не очень понимаю, что те пытаются сделать
Спасибо!
** Весна ** не будет искать application.properties по умолчанию, это ** Spring Boot **, который сделает это, пожалуйста, не вводите других в заблуждение –