Spring做为一个Bean容器,经过AOP和IoC很好的将这些Bean管理起来。可是,有的时候,咱们但愿从Spring的上下文管理其中部分与咱们业务相关的对象。今天,想说的问题就是经过一个Map取出Spring符合咱们业务中的Bean,在业务的特定阶段进行使用。spa
问题描述:
在处理业务中,把一部分数据信息须要放置到一个托管的地方,根据不一样的状态来完成处理。而处理数据的逻辑不一样。.net
解决办法:
那么咱们能够经过为数据添加业务类型,而后咱们经过类型去寻找符合它的业务处理。而咱们的业务不少,若是经过switch判断,这样的程序耦合性很高,很不符合Spring的规范。经过查看资料,咱们发现经过Spring将这件事变得简单了不少。对象
思路描述:
1. 经过定义一个Bean注册器(BeanRegistry),经过实现ApplicationContextAware接口,获取Spring的上下文,经过InitializingBean接口,在实例加载完毕后,从Spring上下中获取MarkedBizBean接口类型的Bean信息。
2. 须要配合业务处理的Bean须要实现MarkedBizBean接口,这样我能够经过BeanFactoryUtils.beansOfTypeIncludingAncestors方法从Spring上下文收集须要的Bean。
3. 经过一个BizBeanService的服务接口供外界使用BizBean信息。
4. 那么,咱们将要处理的对象信息,只须要存储了须要处理的业务key或者其余的方式,将业务数据和业务操做关联起来便可解决问题。接口