本文已参与「新人创作礼」活动,一起开启掘金创作之路。
环境准备
- 安装jdk,idea,maven并做好相应配置
- 操作系统:windows
Spring源码下载
Spring源码Github仓库地址为:github.com/spring-proj…
首先,选择合适的RELEASE版本,然后下载ZIP包即可
软件版本介绍:
- GA:General Availability,官方正式发布的稳定版本,同质的还有RELEASE,Stable,Final
- RC:Release Candidate,发行候选版本,基本不再加入新的功能
- Alpha:内部测试版本,bug较多,功能不全
- Beta:公开测试版,比Alpha版本晚些,还会加功能,修bug
- M:Milestone,开发期发行版本,边开发边发行
导入IDEA
import-into-idea
Within your locally cloned spring-framework working directory:
- Precompile
spring-oxmwith./gradlew :spring-oxm:compileTestJava- Import into IntelliJ (File -> New -> Project from Existing Sources -> Navigate to directory -> Select build.gradle)
- When prompted exclude the
spring-aspectsmodule (or after the import via File-> Project Structure -> Modules)- Code away
- 在解压缩后的源码路径下执行预编译指令:
./gradlew :spring-oxm:compileTestJava
- build.gradle 文件里配置阿里云镜像加速
buildscript {
repositories {
maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }
maven { url 'https://maven.aliyun.com/repository/jcenter' }
}
dependencies {
classpath 'org.asciidoctor:asciidoctorj-pdf:1.5.0-alpha.16'
classpath 'io.spring.asciidoctor:spring-asciidoctor-extensions:0.1.3.RELEASE'
}
}
repositories {
maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }
maven { url 'https://maven.aliyun.com/repository/jcenter' }
mavenCentral()
maven { url "https://repo.spring.io/libs-spring-framework-build" }
}
- 导入IntelliJ IDEA:
File -> New -> Project from Existing Sources -> Navigate to directory -> Select build.gradle
- 排除
spring-aspects,aspects包在idea中不能完成编译,只能unload
测试
- new Module
- 引入
spring-context项目
spring-context包含了spring-aop、spring-beans、spring-core等 Spring核心
- 简单测试
接口:
package com.uestc;
public interface HelloService {
void sayHello(String name);
}
实现:
package com.uestc.Impl;
import com.uestc.HelloService;
public class HelloServiceImpl implements HelloService {
@Override
public void sayHello(String name) {
System.out.println("Hi~" + name);
}
}
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
https://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="helloService" class="com.uestc.Impl.HelloServiceImpl"/>
</beans>
调用Main方法:
package com.uestc;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
public class Main {
public static void main(String[] args) {
// xml文件绝对路径
String xmlPath = "E:\Java\javaWorkSpace\spring-framework-5.2.0.RELEASE\spring-demo\src\main\resources\spring-config.xml";
// 解析spring的配置文件
ApplicationContext applicationContext = new FileSystemXmlApplicationContext(xmlPath);
// 获取配置文件的 <bean id="helloService" .... />
HelloService helloService = (HelloService)applicationContext.getBean("helloService");
// 调用方法
helloService.sayHello("China");
}
}