关于java:手把手教你spring源码搭建

43次阅读

共计 2977 个字符,预计需要花费 8 分钟才能阅读完成。

一 Spiring 源码搭建

1.1 gradle 装置

  • 官网下载:https://gradle.org/install/; 减速版:https://services.gradle.org/distributions/
  • 增加 GRADLE_HOME 环境变量,指向 Gradle 解压目录;
  • 配置 Path 环境变量: %GRADLE_HOME%\bin
  • 关上命令行 输出命令:gradle -v,显示版本号等信息阐明配置胜利;

先不要下载安装,看前面,急躁看完本节所有内容再想要不要全局装置;

1.2 下载源码

github: https://github.com/spring-projects/spring-framework

常识追寻者下载的是 spring 源码 5.0 版本, gradle 6.5.1, jdk1.8;

因为 github 下载网速很慢,能够登陆码云进行 folk 一份 github 的 spring 源码到本人仓库下载会很快,如果你比拟懒,常识追寻者也找到一个仓库如下;

https://gitee.com/mirrors/Spring-Framework

1.3 导入 IDEA

  1. 关上 IDEA
  2. 抉择 Improt Project,指向 spring 源码目录;
  3. Improt Project from Existing Sources;
  4. 抉择 build.gradle;
  5. 配置 gradle 构建(如果不想全局配置这步省略,关上工程后会主动下载 gradle)

留神:idea 须要配置 gradle 敞开 offline 模式;因为 2019 版本在 setting 中无奈找到 而是在右侧的视图中;

1.4 源码编译

有的小伙伴会下错 gradle 版本,那真是卡几天都无奈解决的是,源码编译无奈通过,间接放弃啊,常识追寻者也卡了一会,看官网阐明才晓得咋回事;

形式一

在源码我的项目的当前目录命令行输出如下命令会主动下载 gradle, 间接将链接复制进去应用迅雷下载,而后配置 gradle,在 右侧 gradle 视图中找到 spring-oxm 我的项目的 compileTestJava 双击即可;

gradlew :spring-oxm:compileTestJava

形式二

也能够不配置本地全局 gradle,你网络好就间接在 命令行 中应用如上命令,idea 会主动进行部分配置;

急躁期待一段时间进行源码编译;而后再用 idea 关上工程,构建胜利如下

1.5 替换仓库

工程目录下找到 build.gradle; 在如下代码中增加一行 阿里仓库,晋升下载依赖速度;

repositories {
mavenCentral()
maven {url “https://repo.spring.io/libs-spring-framework-build”}
maven {url “https://repo.spring.io/snapshot”} // Reactor and RSocket
}

阿里云仓库

maven {url “http://maven.aliyun.com/nexus/content/groups/public/”}

1.6 去除 spring-aspect 加载

如果加载到前面发现 spring-aspect 模块依赖报错,

第一种计划 间接点击该工程 右键 -> unload module,或者应用 exclude module 排除模块;

第二种计划:装置 aspect 须要手动装置

https://www.eclipse.org/aspectj/downloads.php

对于 装置请看上面链接,因为常识追寻者这边没报错;

https://blog.csdn.net/a704397849/article/details/102754505

1.7 创立 gradle 测试工程

File–>New–>Modul–>Gradle–>Java–>Next

关上测试工程的 build.gradle 文件增加 依赖 beas 和 context;

dependencies {
compile(project(“:spring-beans”))
compile(project(“:spring-context”))
testCompile group: ‘junit’, name: ‘junit’, version: ‘4.12’
}

新建用户实体

public class SysUser {

private String username;

private String password;

public SysUser() {
}

public SysUser(String username, String password) {
this.username = username;
this.password = password;
}
// 省略 set/get toString
}

新建配置类

/**
* @Author lsc
* <p> </p>
*/
@Configuration
public class SysConfig {

@Bean
public SysUser sysUser(){
return new SysUser(“zszxz”,”123″);
}
}

新建主类测试

/**
* @Author lsc
* <p> </p>
*/
public class ZszxzMain {

public static void main(String[] args) {
// 获取容器
ApplicationContext ac =new AnnotationConfigApplicationContext(SysConfig.class);
// 获取 bean
SysUser user = (SysUser) ac.getBean(“sysUser”);
System.out.println(user.toString());
}
}

build 一下 测试工程,而后执行主类,个别状况下会报错看后续内容

1.8 去除格调校验

如果报代码格局谬误,找到 src 下 checkstyle 外面 checkstyle.xml 文件,去除掉 外面的格调校验;

<?xml version=”1.0″?>
<!DOCTYPE module PUBLIC “-//Checkstyle//DTD Checkstyle Configuration 1.3//EN” “https://checkstyle.org/dtds/configuration_1_3.dtd”>
<module name=”com.puppycrawl.tools.checkstyle.Checker”>
</module>

1.9 kotlin 报错

如果 kotlin 1.3 版本太低,无奈反对新的语法,找到 idea 的 kotlin 语言配置,降级到 1.4;常识追寻者编译第一次编译呈现这种问题,第二次没有;很魔幻的事件,倡议大家不要应用 idea 2019.2 版本,坑比拟大;

重点:网速很重要,如果连 wifi 不倡议进行编译,常识追寻者亲测用 wifi 发了 2 天没搞定!!!起初换了宽带十分快;

1.20 外围包编译出错

如果 spring-core 外围包下 jrf 包(org.springframework.core.metrics.jfr)外面的类出错一种方法间接正文掉出错类,

第二种:可能是 jdk 不兼容,更换 jdk;

1.20 编译胜利

如果最初没报错,并且主类执行胜利输入如下;

> Task :zszxz-test:ZszxzTest.main()
SysUser{username=’zszxz’, password=’123′}

正文完
 0