通过Spring Boot application.yml配置Hazelcast

时间:2018-04-13 18:47:08

标签: java spring spring-boot hazelcast

我能够使用hazelcast.xml文件在我的Spring Boot应用程序中使用Hazelcast缓存。但是,该应用程序有多个配置文件,我试图避免管理多个hazelcast.xml文件。我想配置application.yml中的所有选项。如果我正确理解the documentation,我应该可以在我的application.yml中执行以下操作,对吗?

hazelcast:
  client:
    config:
      network:
        join:
          tcp-ip:
            member:
              - 1.2.3.4
              - 9.8.7.6
      map:
        name: user-details
        max-size: 1000
        eviction-policy: LRU
        eviction-percentage: 10
        time-to-live-seconds: 900

除非它不起作用。我已经尝试通过application.yml找到其他参考配置Hazelcast,但没有找到。是我试图做的不可能吗?

2 个答案:

答案 0 :(得分:1)

application.yml文件是一种将配置属性传递给Spring Boot的方法。目前,还没有一种自动方式将这些方法从一个传递到另一个。

所以你要做的事情不会按原样运作。也许值得您在https://github.com/hazelcast/hazelcasthttps://github.com/spring-projects/spring-boot上记录问题,以便解决问题。

与此同时,如果您的application.yml具有

等属性
hazelcast:
 group:
  name: "stack.overflow"

然后这将作为hazelcast.group.name属性放入Spring的环境中。

你有hazelcast.xml包含

<group>
    <name>${hazelcast.group.name}</name>
</group>

然后“所有”你需要做的就是让代码像这样创建一个Config @Bean

@Bean
public Config config(Environment environment) {
    Properties props = new Properties();
    props.put("hazelcast.group.name", environment.getProperty("hazelcast.group.name"));
    return new ClasspathXmlConfig("hazelcast.xml", props);
}

将属性从YML文件传递到XML文件。

答案 1 :(得分:1)

我遇到了同样的问题,为此添加了一个配置类:

hazelcast:
  group_config:
    name: hazelcast-cluster
    password: hazelcast-cluster
  network_config:
    join:
      multicast_config:
        enabled: false
      kubernetes_config:
        enabled: false

然后我将其放入application.yml:

groupID

(是的,我知道这是一个老问题,但是根据Google来说,它是最受欢迎的问题)