Java @使用Spring数据时的区域注释

Java @使用Spring数据时的区域注释,java,spring,spring-data,gemfire,spring-data-gemfire,Java,Spring,Spring Data,Gemfire,Spring Data Gemfire,我正在使用Spring数据和Gemfire开发一个数据服务。 有一个注解 @Region("<region name>") @区域(“”) 指定要存储POJO的Gemfire区域 它需要配置的Gemfire区域的名称。 我觉得硬编码区域名称是一种糟糕的做法,因为Gemfire集群将由一个单独的团队管理,我认为区域名称应该是完全可配置的 是否有更好的做法来避免硬编码区域名称?所有访问该区域的进程都必须共享该区域名称。这类似于关系数据库中的表名。从这个意义上讲,它与JPA或Hiber

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

@Region("<region name>")
@区域(“”)
指定要存储POJO的Gemfire区域

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


是否有更好的做法来避免硬编码区域名称?

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

您可以使用Spring表达式语言来插入区域名称吗

我们将配置bean中的值(其本身基于XML文件)注入@value注释中,例如:

@Value("#{config.dataSourceConfig.dbMainUsername}")
其中“config”是配置bean的名称


不确定这是否适用于所有注释,但一般来说,我认为在应用程序域对象的@Region注释中指定区域的名称/路径并不一定是不好的做法;这当然要明确得多

但是,我可以理解将这些东西进行配置的必要性,可能是因为您从一个env(例如DEV)升级到另一个env(例如PROD)。因此,请参见最近的更改

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

以及这项提议,未来的改变


.

不确定它是否回答了我的问题。我想能够加载至少从属性文件的地区名称。我不喜欢源代码中硬编码的名字。你有关于这个的阅读材料吗?我需要避免硬编码在注释中传递的值。Tnx