有什么开源框架组件在和spring整合的时候,使用了spring的Bean初始化过程提供的一下扩展特性的?

ismallboy
  • 37

如题,有什么开源框架组件在和spring整合的时候,使用了spring的Bean初始化过程提供的一下扩展特性,或者说使用了spring的aop等特性的?

  • Spring的Bean初始化过程,提供了很多的扩展特性,比如:Aware接口(BeanNameAware、ApplicationContextAware、BeanFactoryAware等接口),BeanFactoryPostProcessor接口(postProcessBeforeInitialization方法,postProcessAfterInitialization方法),InitializingBean接口(afterPropertiesSet方法),DisposableBean接口(destory方法),FactoryBean接口等扩展点。
  • 比如:mybatis和Spring的整合组件mybatis-spring中的SqlSessionFactoryBean,就应用了FactoryBean扩展点。大家有知道更多类似的组件使用了spring bean的哪些扩展点么?想找多一些开源项目来加深对spring bean初始化过程的理解。
回复
阅读 739
3 个回答

你都说到了mybatis,那mybatis这边都不少东西了;
比较常见的
1:包扫描,mybatis自己实现了一个mapper扫描的功能,入口是MapperScannerConfigurer
2:mapper代理:MapperFactoryBean
3:BeanPostProcessor接口,这个接口的功能太多了,像@Autowrite自动注入的实现AutowiredAnnotationBeanPostProcessor,@PostConstruct的实现CommonAnnotationBeanPostProcessor
4:像mvc的入口,dispatchserServlet也实现了ApplicationContextAware接口

如果需要看启动过程做了啥,最好按照模块来,一个个的看,一把梭哈肯定是不行的

ps:Aware接口的回调,大部分也是走的BeanPostProcessor,实现类ApplicationContextAwareProcessor

随便一个接口的实现类都能多到怀疑人生。重点还是关注接口的作用的吧。spring的主要扩展接口虽然不多,但二级接口也是挺多了,然后关注一下框架内部的实现类。至于各个其他框架的实现类,那肯定是千变万化,永远都有新花样。

可以看看feign的源码,从@EnableFeignClients的@Import注解开始看,有使用各种aware processor factoryBean和ImportBeanDefinitionRegistrar等来做到动态扫描类注册bean什么的

宣传栏