我有以下问题。我根据给定配置文件在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”。
我在这里做什么错了?
答案 0 :(得分:1)
@Primary注释启用一个bean,当一个以上的bean有资格自动装配单个值的依赖项时,
因此带有@Primary
批注的bean将获得更多的偏好
答案 1 :(得分:0)
因此,我终于意识到,在yaml文件中,我放置了“配置文件”而不是“配置文件”。这就是为什么没有选择我的个人资料。
我最终改变为:
---
spring:
profiles: dev
my:
db:
serviceId: 'my-dev-service'
---
spring:
profiles: prod
my:
db:
serviceId: 'my-prod-service'
---