首页 > 编程知识 正文

spring框架搭建及详解,开发环境搭建

时间:2023-05-04 12:25:23 阅读:51780 作者:3395

前言本文旨在记录构建Spring源环境中遇到的问题和解决方案,以供参考。

1、所需资源

IDEA 2019.1

JDK 1.8

spring-5.2.8 .发行版

gradle-5.6.4

2、资源下载和版本说明2.1 spring资源下载

ydxrk :使用git clone本地

git clone-- branchv5.2.8. release https://github.com/spring-projects/spring-framework.git方法spring源代码为zip文件

ps :为什么选择发行版本,是因为发行版本中使用的依赖关系也是发行版本,在maven库中不会找到。

2.2下载、安装和配置APP

2.2.1 gradle下载

1 )首先,确定下载的Spring源代码所需的gradle版本

查看文件: spring-framework/grad le/wrapper/grad le-wrapper.properties

可以确定gradle的版本是gradle-5.6.4-吸引人的BMW.zip

https://services.grad le.org/distributions/grad le-5.6.4 -如果诱人的BMW.zip请求失败,可以将distributionUrl更改为本地地址,如下所示

# distribution URL=https 65://services.grad le.org/distributions/grad le-5.6.4 -迷人的BMW.zipdistributionurure 许多帖子都提到了jdk编译问题,但实际上由于没有安装正确版本的gradle,导致编译出现了各种错误。

例如,编译时可能找不到函数。

类似错误: Could not find method testCompile () for arguments

2 )下载gradle

gradle下载地址: https://services.grad le.org/distributions

下载到本机,解压缩到指定的路径。

2.2.2 gradle安装

1 ) gradle-5.6.4-将吸引人的BMW.zip解压缩到指定路径即可完成安装。

2 )环境变量配置

添加GRADLE_HOME系统变量并指示gradle的安装路径。

在PATH上配置%GRADLE_HOME%吸引人的宝马

打开cmd,键入gradle -v验证gradle是否已成功安装。

3 )设置Gradle的本地仓库路径

如果不想将下载的文件默认为CD驱动器,可以通过设置GRADLE_USER_HOME系统变量来更改默认仓库路径,并自定义gradle_repo文件的路径。

2.2.3 gradle配置

与maven的settings.xml一样,可以设置gradle的默认配置文件。

gradle安装路径:在gradle-5.6.4/init.d/中添加名为init.gradle的文件

init.gradle的内容如下:

all projects { repositories } maven local (maven ) URL ' https://maven.a liyun.com/nexus/content/groups/public/' } bububublic

4、源代码配置调整4.1目标文件: build.gradle

1 )对gradle-enterprise-conventions的评论

此plugins加载失败,否则编译失败。

删除注释行//id ' io.spring.grad le-enterprise-conventions ' version '0.0.2'

2 )目的是在仓库中添加蚂蚁镜像,以加速资源下载,提高编译速度。 行号约280,depend

encyManagement下的repositories添加:

maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }

4.2 目标文件:gradle.properties

增加内存,按需加载

1.增加内存分配org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-82.按需配置org.gradle.configureondemand=true3.开启守护进程org.gradle.daemon=true

ps:gradle.properties可以确定spring的version。

5、idea导入spring源码 5.1 导入源码步骤

找到spring-framework源码根目录下的 import-into-idea.md 文件

步骤1:进入spring-framework源码目录,命令 gradlew :spring-oxm:compileTestJava

步骤2:导入idea,File - New - Project from Existing Sources

 5.2 预编译,编译测试代码

进入spring源码目录,在此打开cmd,输入 gradlew :spring-oxm:compileTestJava 进行预编译。出现 BUILD SUCCESSFUL 则说明编译成功。

若编译时报错:Execution failed for task ':spring-oxm:compileTestJava'.JiBXException in JiBX

解决方案:使用Gradle 构建spring源码 Execution failed for task ':spring-oxm:compileTestJava'.JiBXException in JiBX_zx1323的博客-CSDN博客

5.3 导入idea File -> New -> Project from Existing Sources -> Navigate to directory -> Select build.gradle

方法1:直接选择 build.gradle 文件

方法2:直接打开源码项目

进入idea进行设置

 内存配置:使用工具编译时,可能会出现内存溢出情况,这里我们编译时需要增加相关参数

-XX:MaxPermSize=2048m -Xmx2048m -XX:MaxHeapSize=2048m

点击 Refresh all Gradle projects

 至此spring源码已经导入成功。

6、调试运行 6.1 调试一:创建新的module

module建好之后要先导入spring的源码模块

建立新的测试类,HelloSpring.java:

package spring.demo;import org.springframework.stereotype.Service;/** * HelloService * @date 2021/9/10 20:16 */@Servicepublic class HelloSpring {public void say(){System.out.println("Hello Spring");}}

注册HelloSpring类,开始运行:

package spring.demo;import org.junit.Test;import org.springframework.context.annotation.AnnotationConfigApplicationContext;/** * Unit test for simple App. */public class AppTest { /** * Rigorous Test :-) */ @Test public void test() {AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();context.refresh();context.register(HelloSpring.class);HelloSpring helloSpring = (HelloSpring) context.getBean("helloSpring");helloSpring.say();System.out.println( "执行了 AppTest.test() " ); }}

maven中需要引入 junit-4.10.jar

1)运行测试类,报错:

需要引入 spring.spring-jcl.main

2)再运行,报错:

需要引入 spring.spring-aop.main 

3)再运行,成功。

若再有问题,引入需要的模块,直到运行成功。

OK,最终成功初始化了创建的HelloSpring类。

6.2 调试二:在spring-context模块中创建测试类

1)在spring-context添加测试类,测试验证是否能编译通过。

2)创建测试服务类

package com.chenf.test;import org.springframework.stereotype.Service;/** * HelloWorld * @date 2021/9/11 0:49 */@Servicepublic class HelloWorld {public void say() {System.out.println("Hello World!");}}

3)创建配置文件

在test/resources目录下,新建spring-test.xml ,内容如下: 

<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"><context:component-scan base-package="com.chenf.test"/></beans>

4)创建测试类

在test目录下,新建package:com.chenf.test,新建测试类:HelloWorldTest

package com.chenf.test;import org.junit.Test;import org.springframework.context.support.ClassPathXmlApplicationContext;/** * HelloWorldTest * @date 2021/9/11 0:50 */public class HelloWorldTest {@Testpublic void test() {ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-test.xml");HelloWorld helloWorld = (HelloWorld)applicationContext.getBean("helloWorld");helloWorld.say();System.out.println("执行了 HelloWorldTest.test() ");}}

5)运行调试

在类HelloWorldTest 方法test() 右击Run,然后等待运行结果。

 6)运行结果

运行成功,符合预期。

Hello World!执行了 HelloWorldTest.test() BUILD SUCCESSFUL in 3m 39s50 actionable tasks: 29 executed, 21 up-to-date0:13:41: Tasks execution finished ':spring-context:cleanTest :spring-context:test --tests "com.chenf.test.HelloWorldTest.test"'.

完结。 

参考博客:

Spring源码编译一次性通过&遇到的坑解决方法 - 冰慧 - 博客园

idea导入spring源码并调试运行_ROAOR1的博客-CSDN博客

spring源码阅读环境(几分钟下载包)_lsz-CSDN博客

使用idea和gradle编译spring5.x源码_AN_ERA的博客-CSDN博客

2020-07-09 gradle 编译spring源码 - 简书

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。