簡體   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