繁体   English   中英

使用Spring Data Gemfire时的@Region注释

[英]@Region annotation when using Spring Data Gemfire

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

@Region("<region name>")

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

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

有没有更好的做法来避免对区域名称进行硬编码?

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

你能用Spring Expression Language来注入Region的名字吗?

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

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

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

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

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

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

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

以及这个提议,未来的变化......

SGF-262

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM