这次以spring v5.3.9版本为例子,讲解如何搭建阅读spring的环境
1、源码下载
下载地址:https://github.com/spring-projects/spring-framework
建议用clone进行下载,因为zip包的方式在idea导入项目时会存在报错的问题。
2、gradle配置
spring中内置了gradle
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.3-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
但是idea下载gradle时会很慢,所以如果让idea下载会等很久,所以现在有两种方法
第一种:我们手动下载下来,然后放到任意目录下,把distributionUrl修改为file:///D:/ProgramFiles/gradle-6.8.3-bin.zip,配好GRADLE_USER_HOME(本地仓库)、init.gradle(网络仓库)
第二种:使用本地的gradle
使用Internet Download Manager下载一样版本的gradle
配置方法参照https://blog.csdn.net/GoodburghCottage/article/details/128169907
配好GRADLE_HOME(安装目录)、GRADLE_USER_HOME(本地仓库)、init.gradle(网络仓库)
init.gradle内容:
allprojects {
repositories {
mavenLocal()
maven { name "Alibaba" ; url "https://maven.aliyun.com/repository/public" }
maven { name "Bstek" ; url "http://nexus.bsdn.org/content/groups/public/" }
mavenCentral()
}
buildscript {
repositories {
maven { name "Alibaba" ; url 'https://maven.aliyun.com/repository/public' }
maven { name "Bstek" ; url 'http://nexus.bsdn.org/content/groups/public/' }
maven { name "M2" ; url 'https://plugins.gradle.org/m2/' }
}
}
}
关于init.gradle存放的位置
1.在命令行指定文件,例如:gradle --init-script yourdir/init.gradle -q taskName。你可以多次输入此命令来指定多个init文件
2.把init.gradle文件放到 USER_HOME/.gradle/ 目录下
3.把以.gradle结尾的文件放到 USER_HOME/.gradle/init.d/ 目录下
4.把以.gradle结尾的文件放到 GRADLE_HOME/init.d/ 目录下
如果存在上面的4种方式的2种以上,gradle会按上面的1-4序号依次执行这些文件,如果给定目录下存在多个init脚本,会
按拼音a-z顺序执行这些脚本,每个init脚本都存在一个对应的gradle实例,你在这个文件中调用的所有方法和属性,都会
委托给这个gradle实例,每个init脚本都实现了Script接口。
把项目导入idea,切换到v5.3.9的标签
添加jdk11,因为这次的版本使用的是jdk11,在官网下载即可,然后解压缩,在idea中配置jdk11
设置Gradle的配置
如果使用项目自带的gradle这样配置
如果使用本地的gradle这样配置
如果导入过程中提示无法从某个仓库中下载东西,就把这个仓库在init.gradle中去掉
最后完成导入
新建自己的模块
文件内容
AppConfig
package org.springframework.csp;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@Configuration
@ComponentScan(basePackages = "org.springframework.csp")
public class AppConfig {
}
HelloService
package org.springframework.csp;
import org.springframework.stereotype.Service;
@Service
public class HelloService {
public String sayHello() {
return "Hello, Spring!";
}
}
Main
package org.springframework.csp;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class Main {
public static void main(String[] args) {
// 创建 Spring 容器
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);
// 从容器中获取 HelloService Bean
HelloService helloService = context.getBean(HelloService.class);
// 使用 Bean
System.out.println(helloService.sayHello());
// 关闭容器
context.close();
}
}
build.gradle
plugins {
id 'java'
}
group 'org.springframework'
version '5.3.9'
repositories {
mavenCentral()
}
dependencies {
implementation project(':spring-context')
implementation(project(":spring-core"))
implementation(project(":spring-aop"))
implementation(project(":spring-beans"))
implementation(project(":spring-context"))
implementation(project(":spring-jdbc"))
implementation(project(":spring-orm"))
implementation(project(":spring-tx"))
implementation(project(":spring-web"))
implementation(project(":spring-webflux"))
implementation(project(":spring-webmvc"))
implementation(project(":spring-websocket"))
}
test {
useJUnitPlatform()
}
点击main方法运行,最后输出