很多人有疑问:为什么要读源码?读源码有什么用?我也一直问自己这些问题,读源码非常枯燥,工作中又用不到,慢慢的自己读源码越发现自己知识的不足,无法把知识串起来,形成知识体系。从单系统中常用的Spring源码、Mybatis、springBoot等到 分布式框技术NIO、Netty、Dubbo、SpringCloud......后续都会一一发布这些源码解析。源码阅读过程也是一个积累知识、厚积薄发的过程。

IOC、AOP是spring的2个核心特性。理解这2个特性,有助于更好的解析源码。

IOC:控制反转。把创建对象的权利交给框架,这有利于解耦。

public class PageController {
public String showPage(){ PageService page = new PageService(); return "";
}
}

原先PageController中使用PageService,需要自己new创建对象,使用spring后,由容器创建PageService对象,并依赖注入到PageController对象。

@component
public class PageController { @Autowire
private PageService pageService; public String showPage(){ return "";
}
}

AOP:面向切面。将程序功能中的频繁出现或者与主业务逻辑代码相关度不高的代码抽离出来,通过切面编程的方式在想要调用的时候引入调用的思想。在实际编程中,我们通常会遇到一些交叉业务逻辑(比如:日志,事务,安全等等),这是我们就可以封装一个封面,然后注入到目标对象(具体的业务逻辑)中去。

 源码解析顺序

1、配置文件读取流程

2、单例Bean的初始化过程

3、FactoryBean实例化过程

4、详解Spring Bean生命周期

5、AOP 源码解析1——配置文件读取

6、AOP 源码解析2——动态代理

最新文章

  1. Git Pull 错误
  2. Azure DocumentDB对比MongoDB
  3. Java 集合深入理解(6):AbstractList
  4. SOA和Web Service介绍
  5. xml_editor
  6. when not exists 用法
  7. birkenfeld / sphinx-contrib — Bitbucket
  8. cform 开发框架介绍
  9. java.lang.ClassNotFoundException: org.apache.commons.logging.Log
  10. main函数的实现解析
  11. 在脚本中使用source命令不生效
  12. 搞懂 JavaScript 继承原理
  13. LoadRunner【第五篇】关联
  14. Hystrix浅谈
  15. linux 查看机器cpu核数
  16. 数据库——SQL数据单表查询
  17. Unable to open file '.RES'
  18. postgresql 数据库无法启动
  19. C#高级编程9-第5章 泛型
  20. 其实linux下远程windows并不麻烦

热门文章

  1. SSH框架整合1
  2. 使用sql实现固定样式的输出
  3. postgres开启慢查询日志
  4. Innodb的redo log block
  5. 数据分析入门——pandas之DataFrame多层/多级索引与聚合操作
  6. oracle的insert的时候&符号如何插入
  7. Python爬虫笔记安装篇
  8. 【tensorflow-转载】tensorflow模型部署系列
  9. 禅道的使用—bug管理工具
  10. 最新 奥买家java校招面经 (含整理过的面试题大全)