zoukankan      html  css  js  c++  java
  • Spring阅读方法

    转自:http://www.cnblogs.com/xing901022/p/4178963.html

      最近没什么实质性的工作,正好有点时间,就想学学别人的代码。也看过一点源码,算是有了点阅读的经验,于是下定决心看下spring这种大型的项目的源码,学学它的设计思想。

      手码不易,转载请注明:xingoo

      这篇博文你可以了解到:

      1 Spring jar包以及源码使用

      2 简单的spring运行示例

      3 利用断点调试程序,如何快速的阅读程序【快捷键等的使用】

      这次阅读的源码比较老了,是3.0.5版本的,由于正好手头有这个版本的源码,而且平时基本上也是用的这个版本Spring,因此后文的分析也都是针对这个版本。

      下面贡献一下Jar包以及源码,由于百度云上传的压缩包总是解压失败,就放在csdn上面了。

    如何使用jar包以及源码的source包

      首先,在工程右键,属性中,添加必要的jar包。

      选中必要的jar包,上面给出的源码jar包中,导入spring3.0.5中的所有jar包。

      其中lib内的是spring的jar包,用到哪个导入哪个,不知道的话,全部导入就行了。

      外面的几个jar包,用于日志以及mysql的驱动。commons-logging jar包是必须的,其他的随意吧。

      不确定的话,lib外面的这几个jar包以及lib里面的都导入就行了。

      导入jar包后,点开jar包,选中source attachment进行编辑,链接到源码的jar包。

      选择相应的source源码包

      全部导入后,如下

    spring样例

      首先是一个必要的POJO类,用于注入属性的值。

    复制代码
     1 package com.test.bean;
     2 
     3 public class Person {
     4     
     5     private String name;
     6     private int age;
     7     
     8     public String getName() {
     9         return name;
    10     }
    11     public void setName(String name) {
    12         this.name = name;
    13     }
    14     public int getAge() {
    15         return age;
    16     }
    17     public void setAge(int age) {
    18         this.age = age;
    19     }
    20     public void info(){
    21         System.out.println("name:"+getName()+" age:"+getAge());
    22     }
    23 }
    复制代码

      主函数,用于读取资源文件,获取bean,调用info方法

    复制代码
     1 package testSpring;
     2 
     3 import org.springframework.context.ApplicationContext;
     4 import org.springframework.context.support.ClassPathXmlApplicationContext;
     5 
     6 import com.test.bean.Person;
     7 
     8 public class test {
     9     public static void main(String[] args){
    10         ApplicationContext ctx = new ClassPathXmlApplicationContext("bean.xml");//读取bean.xml中的内容
    11         Person p = ctx.getBean("person",Person.class);//创建bean的引用对象
    12         p.info();
    13     }
    14 }
    复制代码

      bean.xml用于配置bean的资源文件

    复制代码
     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     3     xmlns="http://www.springframework.org/schema/beans"
     4     xsi:schemaLocation="http://www.springframework.org/schema/beans
     5     http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
     6     <bean id="person" class="com.test.bean.Person">
     7         <property name="name" value="xingoo"/>
     8         <property name="age" value="12"/>
     9     </bean>
    10 </beans>
    复制代码

      运行结果

    阅读源码

      首先,有了前面的jar包以及源码包,你就可以通过这个简单的程序,进行但不的调试,阅读源码。

      简单的说下调试的快捷键:

      1 F5:下一步,可以进入下一个函数栈

      2 F6:当前函数的下一步,不会进入其他的函数。

      3 F8:下一个断点。

      4 也可以通过选中一个变量或者表达式,按ctrl+shift+i 来查看内容。或者添加监视的方式,查看。

      5 可以通过快捷键F2,来查看一个函数方法的javadoc,即说明

      6 快捷键F3或者ctrl+鼠标点击,进入一个函数

      7 ctrl+shift+G 查看当前方法都有谁在使用

      8 F4查看类的继承关系,可以向上显示出类继承的父类以及接口。

      有了调试的方法,接下来,就是如何阅读源码了!

      1 参考书籍,推荐《Spring技术内幕》

      这本书,基本上很详细的讲述了,spring的实现方式,以及类之间的复杂关系。可以帮助你快速的理清复杂的类之间的关系。

      2 使用StarUML画类图

      比如你好不容易理清了一个部分的关系,很快就会忘记其中的关系,那么可以通过这个工具,简单的画出其中的复杂关系。

      这样,下一次看的时候也会清楚一些,这是我今天刚画好的ClassPathXmlApplicationContext的类图关系:

      

  • 相关阅读:
    【算法学习笔记】27.动态规划 解题报告 SJTU OJ 1254 传手绢
    【算法学习笔记】26.扫描维护法 解题报告 SJTU OJ 1133 数星星
    【算法学习笔记】25.贪心法 均分纸牌问题的分析
    【算法学习笔记】24.记忆化搜索 解题报告 SJTU OJ 1002 二哥种花生
    【算法学习笔记】23.动态规划 解题报告 SJTU OJ 1280 整装待发
    【算法学习笔记】22.算法设计初步 二分查找 上下界判断
    【算法学习笔记】21.算法设计初步 求第k个数 划分法 快排法
    【算法学习笔记】20.算法设计初步 归并排序 求逆序数
    【算法学习笔记】19.算法设计初步 最大子列和问题的几种方法
    【算法学习笔记】18.暴力求解法06 隐式图搜索2 八数码问题 未启发
  • 原文地址:https://www.cnblogs.com/zhanht/p/5401706.html
Copyright © 2011-2022 走看看