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