У меня есть проект с именем Pikachu
, и его структура выглядит следующим образом
src
|-test
|-main
|-java
|-config
|-dev
|-test
|-prod
|-resources
|-pikachu.mvc.spring.xml
Каждая среда (dev, test, prod) имеет свой собственный файл свойств (формат .j2
). Внутри pikachu.mvc.spring.xml
я настроил bean-компонент для источника данных
// pikachu.mvc.spring.xml
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${db.driver}" />
<property name="url" value="${db.url}" />
<property name="username" value="${db.username}" />
<property name="password" value="${db.password}" />
</bean>
. Каждый файл свойств в другой среде:
// dev/pikachuCfg.properties.j2
db.username = {{pikachu.db_username}}
db.password = {{pikachu.db_password}}
db.url = {{pikachu.db_url}}
db.driver = {{pikachu.db_driver}}
. После развертывания в каждой среде он успешно загружает свойства. Однако, когда я запускаю его на локальном компьютере (jboss11), он выдает PropertyAccessException
,
PropertyAccessException 1: org.springframework.beans.MethodInvocationException: Property 'driverClassName' threw exception; nested exception is java.lang.IllegalStateException: Could not load JDBC driver class [${db.driver}]"}}
Так что вот мои вопросы. 1. Если мне нужен файл свойств в папке resources
, имеет ли он более высокий порядок, чем файлы свойств в папке конфигурации? 2. Если он имеет более высокий порядок, чем другие файлы свойств в папке config
, как этот проект использует файл свойств в другой среде (dev, test, prod)?
Заранее спасибо! EDIT Я прочитал документ (https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot -features-external-config ). Тем не менее, мне все еще неясно, какой из них имеет более высокий порядок между папкой config
и текущей папкой (где находится spring. mvc. xml).