• spring源码


    准备工作
    本示例基于 SpringV5.2.7RELEASE+GradleWapper+jdk1.8.0_131编译
    环境准备
    • maven
    • jdk8+
    • idea
    源码下载
    Spring的源码是发布在github上面的
      1. 下载最新版发布版源码
     
    版本代号
    M:
      M1,M2,…中的M是milestone的简写,意思是里程碑,代表着有重大改进的版本。
     
    构建工具准备:
    安装源码对应的gradle版本(也可不安装),建议使用gradleWraper中的gradle。
    Gadle介绍:
    Gradle是个构建系统,能够简化你的编译、打包、测试过程。熟悉Java的同学,可以把Gradle类比成Maven。
    Gradle Wrapper的作用是简化Gradle本身的安装、部署。不同版本的项目可能需要不同版本的Gradle,手工部署的话比较麻烦,而且可能产生冲突,所以需要Gradle Wrapper帮你搞定这些事情。Gradle Wrapper是Gradle项目的一部分。
    Gradle无需花时间去深入学习,因为我们在学习源码的过程不会过多涉及到gradle,当然有兴趣可以去学习, 相当于后起之秀,但是maven已经够优秀了,暂时应该也没有办法替代maven。
    gradleWraper在该文件中有体现,相当于远程自动下载gradle到本地(所以你可以下载gradle,也可以不下,因为可以使用gradleWraper远程的统一版本):spring-framework-5.2.7.RELEASEgradlewrappergradle-wrapper.properties
    所以如果你需要下载也最好下载该链接对应的gradle版本
     
    修改build.gradle
    这个文件就相当于我们Maven的pom.xml 管理项目的依赖等信息...
    设置镜像
    repositories {
                maven{ url 'https://maven.aliyun.com/nexus/content/groups/public/'}
                    maven{ url 'https://maven.aliyun.com/nexus/content/repositories/jcenter'}
                mavenCentral()
                maven { url "https://repo.spring.io/libs-spring-framework-build" }
            }
    编译工作
    按照官网的方式编译:
    使用gradlew(gradle-wrapper命令) 先编译oxm:compileTest Java: Precompile spring-oxm with ./gradlew :spring-oxm:compileTestJava
      1.将id=4那行进行注释
      2.编译compileTestJava模块
    打开源码所在文件夹,在windows cmd命令中输入,在windows中当前目录无需输入“./”。
    gradlew :spring-oxm:compileTestJava
    配置了镜像很快(一两分钟)就能编译完成, 如果要很久说明你的镜像没起作用,如果编译异常请自行百度,每个人的电脑及环境产生的异常都有可能。
    1. 导入项目到idea中
    导入项目到idea中:Import into IntelliJ (File -> New -> Project from Existing Sources -> Navigate to directory -> Select build.gradle)
    将项目导入到idea中提示配置gradle,按照如下配置
     
    导入后等待编译,莫急,需要一点点时间,编译完成:
    1. 添加测试模块代码:
    添加测试代码:Code away
    new->model->gradle-->输入模块名称

     

    编写代码测试ioc功能
     
    1. 添加依赖
      dependencies {
          testCompile group: 'junit', name: 'junit', version: '4.12' 
          compile(project(":spring-context"))     
      }
    compile(project(":spring-context")) 代表本项目的
    1. 随意添加任意bean:
    package cn.tulingxueyuan.beans;
    
    import org.springframework.stereotype.Service;
    
    /***
     * @Author 徐庶   QQ:1092002729
     * @Slogan 致敬大师,致敬未来的你
     */
    @Service
    public class UserServiceImpl {
    
        public void sayHi(){
            System.out.println("Hello Spring!");
        }
    }
    1. 添加启动配置类:
    import cn.tulingxueyuan.beans.UserServiceImpl;
    import javafx.application.Application;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.annotation.AnnotationConfigApplicationContext;
    import org.springframework.context.annotation.ComponentScan;
    import org.springframework.context.annotation.Configuration;
    
    /***
     * @Author 徐庶   QQ:1092002729
     * @Slogan 致敬大师,致敬未来的你
     */
    @Configuration
    @ComponentScan("cn.tulingxueyuan")
    public class MainStat {
    
        public static void main(String[] args) {
            ApplicationContext context=new AnnotationConfigApplicationContext(MainStat.class);
            UserServiceImpl bean = context.getBean(UserServiceImpl.class);
            bean.sayHi();
    
        }
    
    }
    1. 正确输出,大功告成!
  • 相关阅读:
    Making a CocoaPod
    关于Http
    The podfile
    iOS 8个实用小技巧(总有你不知道的和你会用到的)
    关于深拷贝浅拷贝
    适配ios10(iTunes找不到构建版本)
    iOS 10 推送的简单使用
    __block 和 __weak的区别
    Masonry使用注意事项
    iOS数字键盘自定义按键
  • 原文地址:https://www.cnblogs.com/JaeKe/p/14798024.html
Copyright © 2020-2023  润新知