簡體   English   中英

如何在不依賴於Pivotal GemFire緩存的情況下啟動Spring Boot應用

[英]How to start Spring Boot app without depending on Pivotal GemFire cache

我有一個配置了Pivotal GemFire ClientCache實例及其對應域對象的Spring Boot應用程序。 我還使用Spring Boot Test進行單元測試。 對於每個測試用例,無論是通過類還是通過Maven構建,如果GemFire緩存關閉,Spring ApplicationContext無法加載。

如何在不依賴GemFire緩存的情況下啟動Spring Boot應用程序?

我不確定我是否完全按照您的意思...

對於每個測試用例執行,無論是通過類還是通過Maven構建,如果GemFire緩存關閉,Spring ApplicationContext無法加載。

您是否正在為測試類中的每個測試用例(方法)重新創建ClientCache實例?

如果是這樣,那么這樣做可能會很棘手,因為即使在調用ClientCache.close() ,GemFire可能還沒有完全“關閉”並釋放ClientCache實例使用的所有資源。 但是,通常這並不妨礙在隨后的測試用例執行時重新創建Spring ApplicationContext 由於ClientCache實例骯臟或陳舊,並保留了先前(或最后)測試案例執行的舊狀態,因此通常只會導致后續測試失敗。

您還在測試用例方法上使用Spring的@DirtiesContext嗎?

通常,明智的做法是每個測試類循環ApplicationContext和GemFire緩存實例(例如ClientCache ),其中測試類中的每個測試用例方法將使用相同的ApplicationContextClientCache實例; 這是最理想的。

因此,我有兩件事要與您分享:

  1. 首先,看看用於Apache Geode / Pivotal GemFire項目的新Spring Boot 文檔在這里 我近一個月前宣布了該項目的可用性。 該項目從“客戶端”的角度來使用Pivotal GemFire構建Spring Boot應用程序。 也就是說,默認情況下它為您提供了一個自動配置的ClientCache實例。

  2. 具體來說,從此處開始, 查看 適用於Pivotal GemFire的測試套件的Spring Boot 幾乎所有這些測試類都使用ClientCache實例並測試Pivotal GemFire的各個方面,例如CQ或Security等。

  3. 在某些測試類中,我使用了“模擬” ClientCache實例(例如,該測試類 ,尤其是該測試配置 )。 然而,在許多其他情況下,我用了一個活的GemFire ClientCache例如,對於例如或者這個測試類 ,這是有趣,因為這個測試類,甚至啟動一個服務器ClientCache實例(測試本身)來連接。

  4. Spring Boot中用於Apache Geode / Pivotal GemFire的所有測試協調邏輯均由另一個新項目提供,即Apache Geode / Pivotal GemFire的Spring Test 不幸的是, Apache Geode / Pivotal GemFire的Spring Test在很大程度上仍是WIP,因此尚無文檔。 但是,我已經廣泛使用了這個新的測試項目來為Apache Geode / Pivotal GemFire測試Spring Boot 您將在擴展類(例如ForkingClientServerIntegrationTestsSupport等)中看到它的存在。

總之,將新的Pivotal GemFire的Spring Boot和Pivotal GemFire的 Spring Test項目用作編寫更有效的單元和集成測試的指南。

最后,如果您有一個示例GitHub存儲庫可以重現您的問題,那么我可以為您指明正確的方向。

希望這可以幫助!

問候,約翰

對於單元測試,請使用其他配置文件。 application-ut.yaml並要求spring不要使用任何緩存實現庫:

application-ut.yaml (在條目下方添加並刪除您為Gemfire配置的所有實現)

spring.cache.type : simple

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM