网上对于spring的工厂后处理器的研究还停留在非常浅显的阶段,很多都是从书上抄写了一些内容,最近项目中用到了配置的运行时写入,所以对这方面的内容作了一个粗略的整理;
工厂后处理器的接口包括BeanFactoryPostProcessor及其子接口BeanDefinitionRegistryPostProcessor;在Spring 4.1.5版本中,执行顺序为先执行实现了BeanDefinitionRegistryPostProcessor接口的工厂后处理器,再执行实现了BeanFactoryPostProcessor接口的处理器;
在具体的实现处理器的排序为:首先判断该处理器是否实现了PriorityOrdered,实现PriorityOrdered接口的处理器优先于实现了Ordered接口的处理器,实现Ordered的处理器优先于普通处理器;同样实现了PriorityOrdered或者Ordered接口的处理器之间通过getOrder()方法返回值进行排序,值越小,处理器排在越前面执行;
内部会维护一个hashset来保证没有重名的处理器,也会通过这个set来保证所有处理器只执行一次,即保证实现了BeanFactoryPostProcessor接口的处理器并不会执行第二次;
网友评论