我遇到了以下问题:我基于从基于给定概要文件的yaml文件中读取的值创建数据源。
下面是我的代码
@Value("${my.db.serviceId}")
private String serviceId;
@Primary
@Bean(name = "prodDataSource")
@Profile("prod")
public DataSource prodDataSource() {
return getDataSource(serviceId);
}
@Bean(name = "devDataSource")
@Profile("dev")
public DataSource devDataSource() {
return getDataSource(serviceId);
}
这是我的yaml文件
---
spring:
profile: dev
my:
db:
serviceId: 'my-dev-service'
---
spring:
profile: prod
my:
db:
serviceId: 'my-prod-service'
---
我目前的问题是,当我使用"dev"概要文件启动应用程序时,serviceId的值是"my-prod-service"。
我到底做错了什么?
2条答案
按热度按时间8ehkhllq1#
@Primary注解使bean能够在多个bean被限定为自动连接单个值依赖关系时获得首选项
因此,带有
@Primary
注解的bean将获得更多优先级41zrol4v2#
所以我终于意识到在yaml文件中我把“profile”而不是“profiles”。这就是为什么它没有拾取我的配置文件。
最后我改了: