2014-02-06 58 views
0

我正在開發一個使用Spring Data和Gemfire的數據服務。 有一個註釋@Spring註解使用Spring Data Gemfire時

@Region("<region name>") 

來指定的GemFire區域POJO將被存儲在。

它要求配置的GemFire區域的名稱。 我覺得硬編碼區域的名稱是一種不好的做法,因爲Gemfire集羣將由單獨的團隊管理,我相信區域名稱應該是完全可配置的。

有沒有更好的做法來避免硬編碼區域名稱?

回答

1

區域名稱必須由訪問該區域的所有進程共享。這類似於關係數據庫中的表名。從這個意義上說,它與JPA或Hibernate註釋沒有區別,聲明POJO將存儲在其中的表名。 IIRC,使用Spring Data Repositories,如果@Region不存在,它將從類名中得到它。但無論如何,相應的地區必須存在。如果您的應用程序是GemFire網格的客戶端,則還必須配置與服務器上相應區域具有相同名稱的客戶端區域。如果它是一個對等點,則必須創建該區域(分區或副本)。這些事情可以通過Spring配置或本地GemFire配置來完成,但無論如何,共享區域名稱必須事先知道,如果發生更改,則必須隨處更改。

+0

不知道它是否回答我的問題。我希望能夠至少從屬性文件加載區域名稱。不喜歡源代碼中硬編碼名稱的想法。 –

1

你可以使用Spring Expression Language來注入Region的名字嗎?

我們從配置bean,它本身是基於XML文件注入值,爲@Value註釋e.g:

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

其中,「配置」是在配置bean的名字。

不知道這是適用於所有的註釋壽...

+0

你有這方面的一些閱讀材料嗎?我需要避免硬編碼在註釋中傳入的值。 TNX –

0

一般情況下,我不認爲它必然是不好的做法,指定應用程序域對象的@region標註的區域的名稱/路徑;它肯定更加明確。

但是,我可以理解需要做出這樣的事情可配置,也許你從1個env(例如DEV)升級到另一個(例如PROD)。因此,認爲最近的變化...

SGF-261 - 允許應用程序域對象/實體中的GemFire緩存

除了這個建議,未來的變化將被保存到多個區域...

SGF-262

相關問題