搜文章
推荐 原创 视频 Java开发 iOS开发 前端开发 JavaScript开发 Android开发 PHP开发 数据库 开发工具 Python开发 Kotlin开发 Ruby开发 .NET开发 服务器运维 开放平台 架构师 大数据 云计算 人工智能 开发语言 其它开发
Lambda在线 > 王猴卖瓜 > 对于学习Spring源码的感悟

对于学习Spring源码的感悟

王猴卖瓜 2020-08-02



  最近有在回看Spring源码。
  之所以要看Spring源码,是因为Spring占据了Java的半边天。(学了Spring源码,咱能装啊。) 

  • 看Spring源码的过程中,可以看看这些顶尖攻城狮是怎么敲代码的。

  • Spring的运用更加熟练了。Spring的一些高级知识点也知道了部分。

  • 学了Spring源码,在服务器启动的时候,报有关Spring的错,最起码知道个大概。

  • Spring提供了一些扩展接口,可以满足部分需求,可以实现编码解耦。

---------------------------------------------------------------------------------------------

  Spring提供的扩展接口有aware接口、后置处理器、InitializingBean和DisposableBean、事件机制。这些可扩展的接口主要分两类,一类是针对单个Bean、另一类是针对容器。具体需求,具体分析吧。 

  • 针对单个Bean,BeanNameAware、BeanPostProcessor、InitializingBean和DisposableBean。

  • 针对容器,ApplicationContextAware、BeanFactoryPostProcessor、Spring提供的5种标准事件机制。

---------------------------------------------------------------------------------------------

  知道了Spring提供了可扩展的接口,也简单进行了分类,当然最主要的是要知道这些接口的作用。 

  • Aware接口提供了Bean对容器对感知  
      容器管理的Bean一般不需要了解容器的状态和直接使用容器,但在某些情况下,是需要在Bean中直接对IOC容器进行操作的,这时候,就需要在Bean中设定对容器的感知。Spring IOC容器也提供了该功能,它是通过特定的aware接口来完成的。

  • BeanPostProcessor  

     BeanPostProcessor,可以在spring容器实例化bean之后,在执行bean的初始化方法前后,添加一些自己的处理逻辑。
      实现BeanFactoryPostProcessor接口,可以在spring的bean创建之前,修改bean的定义属性。

  • InitializingBean和DisposableBean  

      当需要在bean的全部属性设置成功后做些特殊的处理,可以让该bean实现InitializingBean接口。
      当需要在bean销毁之前做些特殊的处理,可以让该bean实现DisposableBean接口,该接口也只定义了一个destory方法。

---------------------------------------------------------------------------------------------

  在最后,还是需要知道这些接口的加载顺序。在SpringBean生命周期里,doCreateBean() 方法主要干三件事情:
1. 实例化 bean 对象:createBeanInstance()
2. 属性注入:populateBean()
3. 初始化 bean 对象:initializeBean()
  而初始化 bean 对象时也是干了三件事情:
1. 激活 Aware 方法
2. 后置处理器的应用
3. 激活自定义的 init 方法

---------------------------------------------------------------------------------------------

  最最后,回看文章,发现还是缺了一些环节。各位大佬补脑吧。

扫描二维码

获取更多精彩

王猴卖瓜

                                       老铁,手抖一下  

版权声明:本站内容全部来自于腾讯微信公众号,属第三方自助推荐收录。《对于学习Spring源码的感悟》的版权归原作者「王猴卖瓜」所有,文章言论观点不代表Lambda在线的观点, Lambda在线不承担任何法律责任。如需删除可联系QQ:516101458

文章来源: 阅读原文

相关阅读

关注王猴卖瓜微信公众号

王猴卖瓜微信公众号:wt291814

王猴卖瓜

手机扫描上方二维码即可关注王猴卖瓜微信公众号

王猴卖瓜最新文章

精品公众号随机推荐