首页 > 解决方案 > 在 application.yml 中设置 bean 优先级

问题描述

我有2个春豆

@Bean
public CacheManager hazelcastCacheManger() {
    ...
}

@Bean
public CacheManager infinispanCacheManger() {
    ...
}

如何在 application.yml 属性文件中设置要在我的应用程序中使用的 CacheManager 类型的 bean?也许像参数化限定符之类的东西?

标签: javaspring

解决方案


您可以@Profile在 bean 声明上注明:

@Bean
@Profile("profile1")
public CacheManager hazelcastCacheManger() {
    ...
}

@Bean
@Profile("profile2")
public CacheManager infinispanCacheManger() {
    ...
}

application.yml指示哪个配置文件处于活动状态:

spring:
   profiles: 
      active:profile2

这是更多基于 Profile 的属性和 yaml 示例的详细信息。

如果您需要不同的配置文件进行不同的启动,您可以在 JVM 启动属性中指定活动配置文件。

-Dspring.profiles.active=profile2

推荐阅读