文章目录:
spring源码深度解析这本书怎么样
您好,希望以下回答能帮助您
《SPRING技术内幕——深入解析SPRING架构与设计原理》
该书讲了spring的ioc容器原理,在xml的spring配置文件中,对象是如何解析并生成的。
spring的aop,面向切面编程。这两块是比较重要的,属于核心部分。
其他的如spring mvc ,spring jdbc与hibernate,ibatise集成,spring事务,spring security,
spring 任务调度都有介绍。
大体来说,属于跟着代码走向,一个类一个类介绍了一下。其实代码都是有英文注释的。
跟着作都的思路看过来也还是可以的,最好是对照类图分析。
如您还有疑问可继续追问。
怎么阅读Spring源码
学习源码是一件非常耗时费力的事情,需要有足够的时间和持久的耐心,下面是我阅读郝佳老师的《Spring源码深度解析》所做的记录,书中以Spring3.2讲解,使用jdk1.7。
准备工作
1. 安装github:现在spring源代码都在github管理,所以首先需要下载githup,下;
2. 安装gradle构建工具: 下载完后进行解压到任意盘符,然后增加环境变量GRADLE_HOME,并在环境变量bin中增加%GRADLE_HOME%/bin,打开DOS窗口,运行gradle -v,出现版本号等信息,表示安装成功;
3. 下载Spring源码:首先打开git shell,切换到你的工作目录,然后输入以下命令:git clone git://github.com/SpringSource/Spring-framework.git,后面一串是源码下载地址。大概半小时的样子,就可以下载完成,这时候在你的工作目录中就会出现Spring-framework的目录,里面有Spring各组件的源码包;
4. 构建导入:下载下来的代码不能直接导入Eclipse,要先转换成Eclipse能读取的形式。因为所有组件都会依赖spring-core,所有我们首先要转换Spring-core工程,在命令窗口切换到Spring-core工程,运行gradle cleanidea eclipse命令,我们会看到开始下载工程所依赖的jar包,几分钟后执行完毕,再来看Spring-core文件夹,多了.classpath、.project等文件,这是Eclipse工程所必须的,然后可以把他导入到eclipse。因为大部分Spring组件都会用到 spring-beans、spring-context、spring-aop,而他们又依赖spring-expression、spring-instrument,所以我们干脆先把这些工程都进行转换并导入eclipse。
spring启动过程源码详解
这种解码就是会出现一些数字符号的,然后就是会有弹窗让你点击的,这样你选择一下就可以
也没有什么大的问题的。
怎么阅读spring源码
从HttpServletBean的init()进入,再到initWebApplicationContext(),再到refresh(),再到refreshBeanFactory(),再到finishRefresh(),直到服务器启动成功。不知道读了多少遍,
但是源码的东西实在的太多了,想要完全读懂,完全理清头绪,还差很远啊。所以我只重点关注了两块内容,就是bean的定位加载解析注册、bean的实例化两大块内容,其他地方稍作了解,没有太过深入。
整个容器的启动流程,都在AbstractApplicationContext的refresh()的模板方法中了。
复制代码
1 public void refresh() throws BeansException, IllegalStateException {
2 synchronized (this.startupShutdownMonitor) {
3 // Prepare this context for refreshing.
4 prepareRefresh();
5
6 // Tell the subclass to refresh the internal bean factory.
7 ConfigurableListableBeanFactory beanFactory = obtainFreshBeanFactory();
8
9 // Prepare the bean factory for use in this context.
10 prepareBeanFactory(beanFactory);
11
12 try {
13 // Allows post-processing of the bean factory in context subclasses.
14 postProcessBeanFactory(beanFactory);
15
16 // Invoke factory processors registered as beans in the context.
17 invokeBeanFactoryPostProcessors(beanFactory);
18
19 // Register bean processors that intercept bean creation.
20 registerBeanPostProcessors(beanFactory);
21
22 // Initialize message source for this context.
23 initMessageSource();
24
25 // Initialize event multicaster for this context.
26 initApplicationEventMulticaster();
27
28 // Initialize other special beans in specific context subclasses.
29 onRefresh();
30
31 // Check for listener beans and register them.
32 registerListeners();
33
34 // Instantiate all remaining (non-lazy-init) singletons.
35 finishBeanFactoryInitialization(beanFactory);
36
37 // Last step: publish corresponding event.
38 finishRefresh();
39 }
40
41 catch (BeansException ex) {
42 // Destroy already created singletons to avoid dangling resources.
43 destroyBeans();
44
45 // Reset 'active' flag.
46 cancelRefresh(ex);
47
48 // Propagate exception to caller.
49 throw ex;
50 }
51 }
52 }
其实,我并没有上来就看源码,而是先从看书开始,稍微了解,知道了一些关键点,关键流程,自己产生了一堆疑问,然后带着疑问去读源码,读着读着,发现有些疑问就这么解决了。
// Initialize other special beans in specific context subclasses.29 onRefresh();30 31 // Check for li
onRefresh();30 31 // Check for listener beans and register them.32
深度解析》所做的记录,书中以Spring3.2讲解,使用jdk1.7。准备工作1. 安装github:现在spring源代码都在github管理,所以首先需要下载githup,下