我有一个名为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 ... 。
希望这会有所帮助