2.1 Spring5源码编译
一. 准备工作
1. . 编译环境
- maven
- jdk8
- idea
2. 编译版本:
SpringV5.2.7RELEASE+GradleWapper+jdk1.8.0_131编译
二. 源码下载
git地址: 进入https://github.com/spring-projects/spring-framework
注: 需要连接翻墙软件才行, 不然git特别慢
版本号介绍
三. 构建工作准备
安装源码有两种方式:
第一种: 下载spring使用的对应的Gradle版本,安装
第二种: 使用自带的gradleWrapper.
备注: 我在导入项目到idea的时候, 不能够选择使用的gradle编译类型(使用系统的gradle还是gradleWrapper), 所以, 我是自己安装了Gradle, 然后编译的.
查看spring源码中gradle的版本. 下载对应版本的gradle.
在gradle-wrapper.properties中查看版本号
我们看看到spring5.2.7.RELEASE对应的gradle版本是5.6.4-bin.zip. 我们下载这个文件.
网盘链接: https://pan.baidu.com/s/1NduYeCVYJxDbd4YX1XcIEw 密码: dqcq
如果使用方法二, gradleWrapper会自动下载, 这是官方推荐的方式. window平台的idea可以选择使用gradleWrapper的方式.
四. 编译Spring源码项目
1. 修改build.gradle
设置镜像 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" }
}
2. 编译compileTestJava模块
./gradlew :spring-oxm:compileTestJava
3. 导入项目到idea中, 进行编译
我这里导入代码, 自动就会进行编译了. 不需要额外的操作. 这个和idea的版本有关,我的idea是2020.1的
最后提示finished就ok了.
五. 测试源码编译是否成功
1. 添加测试模块代码
设置项目名, 设置好以后点击finish
2. 添加测试文件, 测试IoC功能
- 为项目添加依赖
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.12'
compile(project(":spring-context"))
}
compile(project(":spring-context")) 代表本项目的
- 随意添加一个bean
package com.lxl.www; import org.springframework.stereotype.Service; @Service
public class UserServiceImpl { public void sayHi(){
System.out.println("Hello Spring!");
}
}
- 添加启动类
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; @Configuration
@ComponentScan("com.lxl.www")
public class MainStat { public static void main(String[] args) {
ApplicationContext context=new AnnotationConfigApplicationContext(MainStat.class);
UserServiceImpl bean = context.getBean(UserServiceImpl.class);
bean.sayHi(); } }
- 启动MainStat并运行. 如果看到如下输出, 表示成功了
代码依然会报错, 是一个git的异常, 这个可以忽略. 看到上面编译成功,并且有打印结果, 就说明成功了.
as
最新文章
- WebComponent魔法堂:深究Custom Element 之 标准构建
- ruby 访问新浪微博API post方式和get方式
- 应用在tomcat下的四种部署方式(原创)
- sqlplus: error while loading shared libraries: /u01/app/lib/libclntsh.so.11.1
- Linux压力测试工具
- python内建函数-数字相关
- POJ 3185
- Swift基础使用方法(Swift开发之中的一个)
- MongoDB Long/Int(长整型)的自增长主键 解决方案
- bottle + vue.js 打造你的单页应用
- BZOJ_1014_[JSOI2008]_火星人prefix_(Splay+LCP_Hash+二分)
- c++读取ccbi
- Mapreduce 反向索引
- Rafy 框架 - 时间戳插件
- jenkins+Gitlab+maven+tomcat实现自动集成、打包、部署
- React组件性能调优
- webpack项目轻松混用css module
- quick Cocos 2dx 学习网站
- selenium 操作过程中,元素标红高亮的两种实现方式
- 执行webpack-dev-server时,提示端口被占用。
热门文章
- SpringMVC4——视图、视图解析器、国际化
- java线程的五大状态,阻塞状态详解
- EXCEL 中数据 批量 填充进 word 中
- 自建本地服务器,自建Web服务器——保姆级教程!
- ms14-064漏洞复现
- Host 'controller' is not mapped to any cell
- Reinforcement learning in artificial and biological systems
- Answers for Q1 and Q2
- [NOIP2018]保卫王国 题解
- WPF Devexpress控件库中ChartControl--实现不等距x轴