环境准备
- 安装jdk,idea,maven并做好相应配置
- 操作系统:windows
Spring源码下载
Spring源码Github仓库地址为:https://github.com/spring-projects/spring-framework
首先,选择合适的RELEASE版本,然后下载ZIP包即可
软件版本介绍:
- GA:General Availability,官方正式发布的稳定版本,同质的还有RELEASE,Stable,Final
- RC:Release Candidate,发行候选版本,基本不再加入新的功能
- Alpha:内部测试版本,bug较多,功能不全
- Beta:公开测试版,比Alpha版本晚些,还会加功能,修bug
- M:Milestone,开发期发行版本,边开发边发行
导入IDEA
Within your locally cloned spring-framework working directory:
- Precompile
spring-oxm
with./gradlew :spring-oxm:compileTestJava
- Import into IntelliJ (File -> New -> Project from Existing Sources -> Navigate to directory -> Select build.gradle)
- When prompted exclude the
spring-aspects
module (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>
参考:https://docs.spring.io/spring-framework/docs/current/reference/html/core.html
调用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");
}
}