spring:
profiles: dev
spring.datasource:
driver-class-name:
password: ~
url: ~
username: ~
---
secdb:
profiles: dev
spring.datasource:
driver-class-name: ~
password: ~
url: ~
username: ~
---
我在application.yml文件中声明了以上两个属性,但是当我在实现类中使用它时,如下所示。
@Value("${spring.datasource.url}")
private String URL;
它可以工作并从YML文件中获取网址。 但是当我这样做时
@Value("${secdb.spring.datasource.url}")
private String URL;
它在春季启动时开始说
Could not resolve placeholder 'secdb.spring.datasource.url' in value...
因为,我处于初级水平。 YML可能是错误的,但我的意图是在YML文件中有两个数据源,第二个用于一个JDBC连接,另一个是默认连接。请指导我完成错误
答案 0 :(得分:2)
您在yaml文件中犯了两个错误。
---
之前,有一个空格。它表示spring.datasource:
是spring.datasource:
。spring:
绝对不是正确的方法。即使您有效@Value("${secdb.spring.datasource.url}")
,您也需要获得secdb
。@Value("${spring.datasource.url}")
这样的Spring配置文件。这不是一种熟悉的方式。您可以像secdb: profiles: dev
一样使用它,并像spring: profiles: secdb
一样激活它。或者,如果您坚持以这种方式使用它,则需要像spring.profiles.active=secdb
一样激活它。毕竟,如果你想使用Spring配置文件属性,你需要像它一样激活它
spring.profiles.active=secdb
要么
在application.properties中添加$ java -jar -Dspring.profiles.active=production
。
我建议您详细阅读this document。
如果有帮助,我会很高兴的。