我正在使用Spring Data和Gemfire开发数据服务。 有一个注释
@Region("<region name>")
指定POJO将存储在哪个Gemfire区域。
它需要配置的Gemfire区域的名称。 我觉得硬编码区域的名称是一种不好的做法,因为Gemfire集群将由一个单独的团队管理,我相信区域名称应该是完全可配置的。
是否有更好的做法可以避免对区域名称进行硬编码?
答案 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)