我目前正在研究一個應用程序,其中域對象D的一個實例被注入到應用程序中。域對象可以包含許多不同的組合,並按其bean定義的不同組合和排列組合,從而導致許多不同的最終對象D,我稱它們爲不同的D版本。對於D的給定版本,我必須填滿原始值並將其保存到數據庫中。使用JPA和Hibernate將它保存到數據庫非常簡單。問題是填寫D中的值。使用SNMP通過網絡獲取值,然後填滿。對於D的每個版本,都有不同的策略可以遵循,因爲D的每個版本都可能有不同的MIB。我目前正在遵循工廠模式。工廠採用D版本並返回一個特定於該D版本的valueRetriever,然後用於獲取值並填充D.在Spring中使用依賴注入來替換工廠模式
另一個明顯的方法是在D中注入配置檢索器,然後用它來檢索配置。但是我還需要在運行時使用檢索器來重新獲取配置,這樣就有必要將檢索器存儲在數據庫中,因此爲每個檢索器創建一個新表,這似乎是目前的開銷。
我的問題是:有沒有更好的方法來檢索配置,即有一個valueRetriever給定了上述使用依賴注入的場景。
編輯:AOP可以在這裏使用嗎?
在定義bean的實例化過程中,這可能是好的,但在將其保存到數據庫之後會發生什麼?在存儲之後,爲了在運行時檢索值,即在從數據庫中加載D之後,將這個基於BeanFactory的Factory仍然能夠提供檢索器?如果這不是真的,那麼我將不得不以某種方式找到一種方法來保持工廠或檢索器與D.這將是非常類似於注入與D本身的檢索器作爲將使用的檢索器,但將該檢索器保存在那麼DB是必要的。 – 2011-03-14 18:33:51