簡體   English   中英

驗證guice模塊的配置-如何使用SPI?

[英]Validating guice module configuration - how to use the SPI?

我正在編寫一個使用Guice引導服務器的框架,因此我擴展了Guice的AbstractModule以創建一個Module ,該Module提供了一些方便的方法供用戶配置其代碼。 但是,我想在啟動代碼之前檢查配置是否正確。 所以它必須放在這里的某個地方:

// here, before the injector is created?
Injector injector = Guice.createInjector(someModule);               
// here, after configure() is called?
Object something = injector.getInstance(SomeServer.class);
// start the server

在創建注入器之前,似乎沒有什么可以檢查的,因為還沒有configure()模塊。 有人提到使用Guice SPI來驗證模塊配置,但是文檔不太清楚。 可以使用Guice的人簡短介紹使用噴油器之前驗證模塊的最佳做法嗎?

我沒有太多的第一手經驗,但是在我看來,您有三種選擇:

  • 如果便捷方法的表達能力足以提供有用的信息而無需運行configure()則可以重構為MyConvenienceMethodModule.myConfigure()MyConvenienceMethodModule.validate() configure() 從理論上講,您可以模擬使用Module.configure(Binder)進行調用,但是使用Guice的EDSL太復雜了。 請改用ElementVisitor (如下)。

  • 調用特定Module上的Elements.getElements()以檢查綁定狀態。 由於元素的類型可能多種多樣,因此您可能想創建一個ElementVisitor (可能是通過創建DefaultElementVisitor的子類來使您與將來要創建的Elements隔離)。 這樣,即使在模塊上下文中,您也可以很好地查看所有綁定,甚至包括Guice EDSL中的綁定。 我認為這是您最好的選擇。

  • 照常創建您的Injector並調用getAllBindings()進行調查。 如果配置的健全性取決於多個模塊的交互方式,而不是單個模塊的結構方式,那么這可能是最佳選擇。 如果僅在這一點進行檢查,您將無法真正分辨出另一個模塊。

暫無
暫無

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

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