穷举法:
把生活所见所闻全部归纳到我们所学的知识体系中,加以思考变成自己的东西。(举例子)
类比法:
把自己熟悉的方法(利用自己已有的知识体系),去对比学习新的知识。
Spring 怎么学?
1. 环境准备好了没有?
2. 项目里边有红叉❌
学习源码,不一定要让项目跑起来,报一两个红叉其实不要紧。
看:是什么?能干啥
想:为什么?
实践:怎么做?
调试的时候,完全可以在运行环境中,导入 jar
包就能调试(有针对性地打断点)
3. 如何从 0 -1 去学习
1.要先看官网
然后去网上找资料参考(有了基本的概念,产生了很多问题,很多猜想)
2.然后,看项目结构
(更加具体地了解,还是产生很多猜想)
3.为什么会存在 Spring 这个东西?
能做什么,做了什么,要我来做,我该怎么做?
4.IOC、AOP、DI、BeanFactory 等这样一系列零碎的概念(人云亦云)
5.能做什么:Java 中的万能胶
6.做了什么: JAVA Bean 能够实现无缝对接
7.要我来做,我该怎么做?
所谓一个框架而言,在编写框架代码的时候,所要对接的 Bean 是不存在的。
通过预设规则,按照一定的规则去顺序加载或识别需要对接的 Bean。(反射,通过类全名字符串可以找到,并创建一个 Bean 的实例)。
规定配置文件的默认名字。
IOC:缓存起来,得把它存起来(Map 容器)
DI: getter、setter、contructor (反射、invoker)
AOP: 为了增强原始 Bean 的功能(代理技术)
没有Spring 将如何开发?
1.认识懒惰的,一切高端技术的发明都是源于人类的懒惰,何不重复地造轮子呢?
2.没有 Spring ,那是到了 Spring 出现以前的开发了。
- 很多设计模式需要自己去整合,当然,你也可以选择不用设计模式(只不过多走点弯路而已)
- 所有的封装、集成、多态、增强、依赖、模块管理等等工作都有自己制定统一的规则(百花齐放、百家争鸣)
- 所有的创建对象、配置依赖关系、资源的重复利用、拓展性的手动操作
Spring 出现以后,JAVA 程序员的春天真的来了,解放了双手。
七分猜测,三分验证(七分靠打拼,三分天注定)
如果猜对了,就会有一种成就感。
看源码,第一遍是非常痛苦的。
看第二遍、看第三遍思路越来越清晰。
带着思考去找入口(主入口、隐藏的入口)
java
// 要想跑起来,运行的是 run 方法里边的代码
new Thread(){
// 跑起来
public void go(){
}
public void run(){
}
}
// 要想跑起来,运行的是 run 方法里边的代码
new Thread(){
// 跑起来
public void go(){
}
public void run(){
}
}
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
RMI 中
java
// socket
socket.write(); // 入口
// ServerSocket
while(true){
server.accept();
}
// socket
socket.write(); // 入口
// ServerSocket
while(true){
server.accept();
}
1
2
3
4
5
6
7
2
3
4
5
6
7
看 Tomcat 的源码
Main
方法
Spring
ClassPathXMLApplicationContext
app 显示的入口- 查找用户需要加载哪些配置文件
- 读取配置文件
- 注册
- 定位
- 加载
- 注册
预习效果调查?
第二轮:预习文档老师不会带大家去课件了,自己在课前看,作为上课的补充资料(用于帮助大家去猜测资料)
:画图,梳理思路,答疑