Spring源码阅读系列总结
最近一段时间,粗略的查看了一下Spring源码,对Spring的两大核心和Spring的组件有了更深入的了解。同时在学习Spring源码时,得了解一些设计模式,不然阅读源码还是有一定难度的,所以一些重要的设计模式简单的做了阐述。同时还会简单的加入一些GOF中提到的设计原则。Spring的源码阅读系列,也暂告一段落。下面是就带你走进Spring世界:
Spring系列的引子
1)Spring WebApplicationContext初始化与消亡
这一节帮我们了解Spring是如何初始化WebApplicationContext。初始化都做了哪些事情?我们在web.xml中配置的ServletContextListener到底有什么用?IOC的入口在哪里?都将在这里得到答案。
Spring IOC
2)IOC容器的设计与实现(一)——BeanFactory
这一节帮我们解决如下问题:
什么是IOC、DI、DIP?BeanFactory是做什么用的,他有哪几种实现方式?如何以编程式动态加载资源?BeanFactory与ApplicationContext是什么关系?
3)IOC容器的设计与实现(二)——ApplicationContext
看了这一节,就会知道下面的这些问题的原因:
Spring官方为什么推荐使用ApplicationContext,而不是BeanFactory?WebApplicationCOntext与ApplicationContext的区别在哪里?
Spring AOP
4)Spring AOP设计与实现(一):动态代理
这并不是一片单纯的讲Java动态代理的文章。阅读这一篇,你会了解什么是代理模式?代理模式主要用在什么地方?Java动态代理是如何实现的?你有没有猜想过动态代理生成的类是什么样的?
5)模拟JavaEE的Filter
学习JavaEE的人都对JavaEE中的Filter不陌生,但是大家可否想过它是如何实现的呢?为什么会在Spring AOP下来学习Java EE的Filter呢,两者有什么管理呢?
6)Struts2中被误解的Interceptor
用过Struts2的人都会对Interceptor有一定的了解,可你了解的那些是正确的吗?在Struts2、MyBatis、Spring、JFinal中都有Interceptor,甚至在Java中也有,他们的原理都是一样的吗?Interceptor与Filter是什么关系,有什么异同点呢?为什么会在Spring AOP下来学习Interceptor呢,两者有什么管理呢?Interceptor与AOP是和关系呢?
读完这一篇,上述问题都将得到解决。
7)标准AOP与Spring AOP
标准AOP,没听过?AOP联盟,没听过?Spring AOP的那些重要角色:Aspect、PointCut、JoinPoint、Advice等等。你能用一句话概括Spring AOP是做什么的吗?
8)使用标准AOP的API模拟Spring AOP + AspectJ的设计与实现
Spring中有哪几种AOP实现方式,你造吗?Spring AOP+AspectJ的实现你能模拟出来吗?Spring AOP与 JDK的动态代理有嘛关系,你造吗?
Spring MVC
9)Spring MVC 初始化
Spring的MVC框架你了解吗?这个过程做了那些事情?namespace-servlet.xml中的Bean Definition在哪里被加载你知道吗?
10)Spring MVC 如何处理HTTP请求
你难道对Spring MVC如何处理HTTP请求不好奇吗?文件上传,就一定要在namespace-servlet.xml中做相关配置吗?面试时问你这部分涉及到哪些设计模式,你会支吾吗?
Spring 下的数据访问
11)模板方法与回调函数
不是说数据访问的吗,怎么提起模板方法模式了呢?提了模板方法模式就算了,咋还提Callback呢?JDBCTemplate你造吗?
12)Spring JDBC 组件的设计与实现
使用Spring就一定要与Hibernate等ORM结合使用吗?你知道Spring中有个叫JdbcTemplate的良人在等你吗?
13)Spring如何支持各种ORM框架
对于Spring是如何支持那些数据访问框架的,你好不好奇,我不知道,反正我是好奇了。前面学习的模板方法模式,可不仅仅是为了了解Spring JDBC组件的。
Spring 事务处理
14)事务相关
这里是对事务的简单说明,如果你要看Spring 事务,这一节可是不容忽视的,以为它会带你去了解......(分布式事务、编程式事务等等)
这一章也将网络上大部分的事务相关的文章做了整理,你再也不用去网上搜了,有它就够了。
15)Spring事务管理的基础
你可能听过用过声明式事务管理或者编程式事务管理,但你知道他们根本是一样的吗?你知道TransactionManager的配置吗?
16)Spring声明式事务处理和编程式事务处理的设计与实现
艾玛,你终于出来了,都等不及了。
如果从头到尾看完了这些文章,并且理解了,那么该系列文章就应当带你走出了Spring,因为你了解了Spring核心,及其各种组件的设计与实现,这才是你学习的本质。
同时,这些文章中可能会有纰漏的地方,还请大家指正。大家共同学习,共同进步。
最新文章
- Node-Webkit打包
- mongodb未授权访问漏洞
- linux配置网卡IP地址命令详细介绍及一些常用网络配置命令
- 【使用Unity开发Windows Phone上的2D游戏】(2)初识工具
- HTML5语义标签的实践
- Java:内部类(静态内部类、成员内部类、局部内部类、匿名内部类)
- Java中String类型的不可变性和驻留池
- 关于android socket出现at java.net.DatagramSocket java.net.BindException at libcore.io.IoBridge.bind(IoBridge.java:89)等waring
- http headers
- aws 装机软件
- Jenkins +git +python 进行持续集成进行接口测试(接口测试jenkins持续集成篇)
- 版本控制工具Git的复杂用法的情境分析
- VGA线 1080P之伤 <;中秋节篇>;
- 通过配置hosts.allow和hosts.deny文件允许或禁止ssh或telnet操作
- Linux Install redis
- java解决查找问题
- Java内存模型和JVM内存管理
- iOS电话等中断事件的开始和结束通知
- C#:ORM--实体框架EF(entity framework)(1)
- 中高级PHP开发者应该掌握哪些技术?
热门文章
- 孙鑫MFC学习笔记17:进程间通信
- Maximum length of a table name in MySQL
- 11.20 CSS定位智博星网页制作
- 【转】MyEclipse 2015优化技巧
- Java final类
- GJM:用C#实现网络爬虫(二) [转载]
- windows根据端口号找进程
- 常见.NET功能代码汇总
- Unsupported configuration attributes: [FILE_UPLOAD]
- AWS CloudFront CDN直接全站加速折腾记The request could not be satisfied. Bad request