前置条件
- OracleJDK17
- Gradle7.4.x
- Idea2022.2
JDK 这里切记不要使用 OpenJDK。因为会缺少一些依赖
Idea 的版本可以随自己的习惯进行替换
初始化工程
1.拉取代码
git clone https://github.com/spring-projects/spring-framework.git
这里我拉取的是 main 分支的代码,也就是 20220731 最新的代码
2.导入工程到Idea
等待Gradle下载完依赖
如果下载依赖较慢,也可以将镜像替换为阿里云的
repositories {
maven { url 'https://maven.aliyun.com/repository/public/' }
maven { url 'https://maven.aliyun.com/repository/spring/' }
maven { url 'https://repo.spring.io/milestone' }
mavenLocal()
mavenCentral()
}
3.构建项目
当最下方的进度条完毕后就可以执行gradle脚本进行构建项目
一般情况下Idea会自动根据依赖关系去决定构建顺序,所以不用根据
import-into-idea.md优先构建什么后构建什么直接用 build 梭哈完事
测试
1.创建模块
在初始化工程后,我们需要创建一个自己用来写代码的模块 my-test
2.编写代码
在 my-test 模块下创建以下代码
- MyBean
package io.mvvm;
public class MyBean {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
- classpath:spring-context.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "https://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
<bean id="myBean" class="io.mvvm.MyBean">
<property name="name" value="Hello"/>
</bean>
</beans>
- ApplicationContextTest
package io.mvvm;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class ApplicationContextTest {
public static void main(String[] args) {
ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("classpath:spring-context.xml");
ctx.refresh();
MyBean hello = ctx.getBean(MyBean.class);
System.out.println("hello: " + hello);
}
}
现在运行 main 方法后可以看到打印了以下内容说明我们已经成功的运行了spring源码了
hello: io.mvvm.MyBean@14ec4505
踩坑
解决乱码
经过前面的步骤我们已经实现了基本的使用
但是如果我们将打印内容替换为中文会发生什么样的事情呢?下面我们来尝试以下
System.out.println("你好: " + hello);
输出如下
你好�? io.mvvm.MyBean@e50a6f6
通过结果可以看出,全角符号是乱码的状态。出现乱码解决乱码
解决方案
执行以下步骤重启后重新 build 项目即可