Spring Boot 从yaml文件读取值

nbewdwxp  于 2023-01-17  发布在  Spring
关注(0)|答案(2)|浏览(150)

我遇到了以下问题:我基于从基于给定概要文件的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"。
我到底做错了什么?

8ehkhllq

8ehkhllq1#

@Primary注解使bean能够在多个bean被限定为自动连接单个值依赖关系时获得首选项
因此,带有@Primary注解的bean将获得更多优先级

41zrol4v

41zrol4v2#

所以我终于意识到在yaml文件中我把“profile”而不是“profiles”。这就是为什么它没有拾取我的配置文件。
最后我改了:

---

spring:
   profiles: dev
my:
 db:
  serviceId: 'my-dev-service'
---

spring:
   profiles: prod
my:
 db:
  serviceId: 'my-prod-service'

---

相关问题