读取本地的java spring属性

问题描述 投票:0回答:1

我有一个名为Pikachu的项目,其结构如下:>

src
 |-test
 |-main
    |-java
    |-config
        |-dev
        |-test
        |-prod
    |-resources
         |-pikachu.mvc.spring.xml

每个环境(开发,测试,生产)都有自己的属性文件(.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文件夹中有属性文件,它的顺序是否比config文件夹中的属性文件高?2.如果它比config文件夹中的其他属性文件具有更高的顺序,该项目如何在不同的环境(开发,测试,生产)中使用属性文件?

谢谢!编辑

我已经阅读了文档(https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-external-config)。但是,我仍然不清楚config文件夹和当前文件夹(spring.mvc.xml所在的位置)之间哪个顺序更高。

我有一个名为Pikachu的项目,它的结构类似于src | -test | -main | -java | -config | -dev | -test | -prod | -resources | -pikachu.mvc.spring ... 。

java spring spring-boot spring-mvc
1个回答
0
投票

希望这会有所帮助

© www.soinside.com 2019 - 2024. All rights reserved.