从Yaml文件读取值

时间:2018-08-17 15:52:29

标签: spring-boot yaml

我有以下问题。我根据给定配置文件在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 个答案:

答案 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'

---