我有2颗四季豆
@Bean
public CacheManager hazelcastCacheManger() {
...
}
@Bean
public CacheManager infinispanCacheManger() {
...
}
如何在application.yml属性文件中设置在应用程序中使用哪种CacheManager类型的bean?也许像参数化的限定词一样?
答案 0 :(得分:2)
您可以在bean声明中指出@Profile
:
@Bean
@Profile("profile1")
public CacheManager hazelcastCacheManger() {
...
}
@Bean
@Profile("profile2")
public CacheManager infinispanCacheManger() {
...
}
和application.yml
中的哪个配置文件处于活动状态:
spring:
profiles:
active:profile2
更多详细信息,Profile based properties and yaml example。
如果您需要不同的配置文件来进行不同的启动,则可以在JVM启动属性中指定活动配置文件。
-Dspring.profiles.active=profile2
答案 1 :(得分:1)
您应该检查弹簧轮廓: https://www.baeldung.com/spring-profiles
您可以告诉每个bean应该在哪个配置文件中注入:
@Configuration
@Profile("hazelcast")
public class ConfHazelcast {
@Bean
public CacheManager hazelcastCacheManger() {
...
}
}
@Configuration
@Profile("infinispan")
public class ConfInfinispan {
@Bean
public CacheManager infinispanCacheManger() {
...
}
}
然后使用正确的配置文件启动项目:
java -Dspring.profiles.active=hazelcast -jar app.jar
答案 2 :(得分:1)
您可以在一个bean上标记@Primary。 https://www.baeldung.com/spring-primary