使用Spring Data Gemfire时的@Region注释

时间:2014-02-06 11:16:40

标签: java spring spring-data gemfire spring-data-gemfire

我正在使用Spring Data和Gemfire开发数据服务。 有一个注释

@Region("<region name>")

指定POJO将存储在哪个Gemfire区域。

它需要配置的Gemfire区域的名称。 我觉得硬编码区域的名称是一种不好的做法,因为Gemfire集群将由一个单独的团队管理,我相信区域名称应该是完全可配置的。

是否有更好的做法可以避免对区域名称进行硬编码?

3 个答案:

答案 0 :(得分:1)

区域名称必须由访问该区域的所有进程共享。这类似于关系数据库中的表名。从这个意义上说,它与JPA或Hibernate注释没有区别,它们声明了将存储POJO的表名。 IIRC,使用Spring Data Repositories,如果@Region不存在,它将从类名中获取它。但不管怎样,相应的区域必须存在。如果您的应用程序是GemFire网格的客户端,则还必须配置与服务器上相应区域同名的客户端区域。如果它是对等体,则必须创建区域(分区或副本)。这些事情可以通过Spring配置或本机GemFire配置完成,但无论如何,共享区域名称必须事先知道,如果它发生变化,它必须在任何地方都改变。

答案 1 :(得分:1)

您可以使用Spring Expression Language注入Region的名称吗?

我们从配置bean(它本身基于XML文件)注入一个值到@Value注释中,例如:

@Value("#{config.dataSourceConfig.dbMainUsername}")

其中“config”是配置bean的名称。

不确定这适用于所有注释......

答案 2 :(得分:0)

一般来说,我认为在应用程序域对象的@Region注释中指定Region的名称/路径并不一定是不好的做法。它肯定更明确。

但是,我可以理解需要使这些事情可配置,也许你从1 env(例如DEV)升级到另一个(例如PROD)。因此,请参阅最近的更改......

SGF-261 - 允许应用程序域对象/实体持久保存到GemFire缓存中的多个区域

以及未来的改变......

SGF-262