Spring做爲一個Bean容器,經過AOP和IoC很好的將這些Bean管理起來。可是,有的時候,咱們但願從Spring的上下文管理其中部分與咱們業務相關的對象。今天,想說的問題就是經過一個Map取出Spring符合咱們業務中的Bean,在業務的特定階段進行使用。 對象
問題描述:
在處理業務中,把一部分數據信息須要放置到一個託管的地方,根據不一樣的狀態來完成處理。而處理數據的邏輯不一樣。 接口
解決辦法:
那麼咱們能夠經過爲數據添加業務類型,而後咱們經過類型去尋找符合它的業務處理。而咱們的業務不少,若是經過switch判斷,這樣的程序耦合性很高,很不符合Spring的規範。經過查看資料,咱們發現經過Spring將這件事變得簡單了不少。 it
思路描述:
1. 經過定義一個Bean註冊器(BeanRegistry),經過實現ApplicationContextAware接口,獲取Spring的上下文,經過InitializingBean接口,在實例加載完畢後,從Spring上下中獲取MarkedBizBean接口類型的Bean信息。
2. 須要配合業務處理的Bean須要實現MarkedBizBean接口,這樣我能夠經過BeanFactoryUtils.beansOfTypeIncludingAncestors方法從Spring上下文收集須要的Bean。
3. 經過一個BizBeanService的服務接口供外界使用BizBean信息。
4. 那麼,咱們將要處理的對象信息,只須要存儲了須要處理的業務key或者其餘的方式,將業務數據和業務操做關聯起來便可解決問題。 io