美文网首页
1.idea导入、编译spring源码

1.idea导入、编译spring源码

作者: 凭窗听风 | 来源:发表于2019-04-11 11:30 被阅读0次

    spring源码学习笔记,要点归纳和代码理解

    前言

    作为一名Java开发,可以说天天与spring打交道了,虽然调试时也可以在IDE中看一些源码,但系统的学习一遍源码,尤其是核心的IoC,DI,AOP等几个模块,不仅能够加深框架的理解,其中的许多技巧和思想也能运用到自己的代码中。

    ok,废话少说,先来看一下spring源码的导入和编译。

    环境参数(被坑了好久总结出来的)

    1. os: macOS 10.14.4
    2. JDK: 1.8.0_172
    3. IDE: IntelliJ IDEA 2018.1.2(Ultimate)
    4. spring-framework版本: 5.2.0,直接从git仓库clone.spring-frmamework 下载速度太慢的同学可参考:提高github的clone速度
    5. gradle版本: 4.10.3 因为没用过gradle,此处被坑了好久。gradle的安装不要使用homebrew,一定要自己从官网下载需要的版本。具体可百度,此处不作敷述。
    6. IDEA的kotlin插件: 1.3.21 手动安装可参考: IntelliJ IDEA手动更新Kotlin

    导入步骤

    以上环境搭建完成,之后的步骤可以说事半功倍了。 导入idea的同学可参考项目下的import-into-idea.md。

    1. 预编译 spring-oxm·
      ./gradlew :spring-oxm:compileTestJava
      耗时几分钟
    2. 项目以gradle项目导入IDEA

      此处的gradle使用我们之前自己安装的4.10.3版本,不要用IDE自带的
      之后idea会自动编译整个项目,大概半小时左右。
    3. 将aspectj模块排除



    创建测试项目

    导入成功之后可以在project下创建一个自己的测试module

    1. 项目根目录右键 -> new -> module -> gradle


    2. 在新项目的build.gradle下添加对spring模块的依赖,这里我先添加了spring-beans 和spring-core的依赖。
    dependencies {
        compile(project(":spring-beans"))
        compile(project(":spring-core"))
        testCompile group: 'junit', name: 'junit', version: '4.12'
    }
    
    1. 在新项目的src/main/resource下添加spring-config.xml文件
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
        <bean id="myTestBean" class="com.pctf.beans.MyTestBean"/>
    </beans>
    
    1. 创建测试bean和启动类
    package com.pctf.beans;
    
    public class MyTestBean {
    
        private String name = "testName";
    
        public MyTestBean(String name) {
            this.name = name;
        }
    
        public MyTestBean() {
        }
    
        @Override
        public String toString() {
            return "MyTestBean{" +
                    "name='" + name + '\'' +
                    '}';
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    }
    
    
    public class AppTest {
    
        public static void main(String[] args) {
            BeanFactory bf = new XmlBeanFactory( new ClassPathResource("spring-config.xml"));
            MyTestBean myTestBean = (MyTestBean) bf.getBean("myTestBean");
            System.out.println(myTestBean.getName());
        }
    }
    

    之后就可以愉快的调试spring源码了。

    后记

    整个导入编译过程其实还是费了挺多时间的,主要是没接触过gradle和kotlin,导致花在搭建编译环境上的精力太多。
    整个过程建议全程科学上网。各种卡顿或者速度慢的问题都有可能是墙的原因。

    相关文章

      网友评论

          本文标题:1.idea导入、编译spring源码

          本文链接:https://www.haomeiwen.com/subject/voaziqtx.html