Spring5本地源码构建

简介: Spring5本地源码构建

一、Spring源码构建


1.1、构建过程


可参照:Spring实现源码下载编译及导入IDEA过程图解


1、配置好Gradle(版本为6.0以下):编译成功的由5.6.4【高版本不行已测试过】


2、到Spring官网来进行下载源码:Spring仓库



3、下载完成之后使用IDEA来打开,接着我们来配置IDEA中的Gradle


根据下图进行配置即可,引用 Spring源码调试环境搭建



4、成功编译结果



编译结束以后,选择项目右侧的gradle,如出现以下视图,则说明编译成功



1.2、构建过程中问题整理


①gradle的url配置不允许为http

原因:1:29 PM Gradle sync failed: Using insecure protocols with repositories, without explicit opt-in, is unsupported. Switch Maven repository ‘Bstek(http://nexus.bsdn.org/content/groups/public/)’ to redirect to a secure protocol (like HTTPS) or allow insecure protocols.


解决方案:将原本的gradle配置中的url都改为https



②Gradle的版本不能超过6.0及以上

原因:1:33 PM Gradle sync failed: The build scan plugin is not compatible with Gradle 6.0 and later.




解决方案:更改版本为5.6


③git相关报错(Process ‘command ‘git’’ finished with non-zero exit value 128)



说明:git的问题,暂时还不知道如何解决,不影响构建。


看到BUILD SUCCESSFUL说明已经编译成功。


④导包速度很慢:修改spring项目中的build.gradle设置镜像源

搜索repositories,来进行修改替换


maven { url "http://maven.aliyun.com/nexus/content/groups/public" }




二、添加测试模块


参考文章:Spring搭建本地源码调试环境


2.1、添加过程


2.1.1、创建module,选择gradle




点击finsh,此时我们的模块已经创建完成如下:



你可以在项目目录中下的settings.gradle文件里看到添加了这个模块:



2.1.2、在当前module中的配置文件里添加依赖



dependencies {
    //添加依赖
    compile(project(":spring-beans"))
    compile(project(":spring-core"))
    compile(project(":spring-context"))
    testCompile group: 'junit', name: 'junit', version: '4.12'
}


然后点击右边的build即可进行添加依赖。


若是出现success,表示引入成功:



2.1.3、编写bean配置文件,来进行测试



①添加Spring的配置文件: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 http://www.springframework.org/schema/beans/spring-beans.xsd">
  <!--配置Bean: User-->
  <bean id="user" class="com.changlu.User"/>
</beans>


②创建一个User对象


package com.changlu;
/**
 * @ClassName User
 * @Author ChangLu
 * @Date 4/30/2022 1:07 PM
 * @Description 用户类
 */
public class User {
  public void sayHello(){
  System.out.println("hello,spring!");
  }
}


③编写测试方法


package com.changlu;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
 * @ClassName SpringDemo
 * @Author ChangLu
 * @Date 4/30/2022 1:08 PM
 * @Description 测试类
 */
public class SpringDemo {
  public static void main(String[] args) {
  ApplicationContext context = new ClassPathXmlApplicationContext("classpath:spring-config.xml");
  User user = (User) context.getBean("user");
  user.sayHello();
  }
}



接着运行即可:



build过程报错

问题1、Could not find com.ibm.websphere:uow:6.0.2.17.

原因:之前build.gradle中镜像地址改成了阿里云的,把它自己的注释掉了



解决方式:把它原来的取消注释即可



2.2、解决运行main方法不编译整个项目的问题


参考文章:idea运行main方法或Test避免编译整个应用的方法、解决idea 运行main方法自动编译整个工程引发的问题


起因:在进行测试模块的main方法测试时点击main运行,发现要进行编译整个项目后才执行main()方法。


解决方案:


1、点击Gradle小扳手




2、勾选settings里compiler中的自动配置



3、修改Application中的Before launch为Build no error check


修改这个的主要原因就是防止直接运行过程中出现其他模块的一些报错问题。



最后我们来运行一下:


相关文章
|
1月前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
71 2
|
1月前
|
数据采集 监控 前端开发
二级公立医院绩效考核系统源码,B/S架构,前后端分别基于Spring Boot和Avue框架
医院绩效管理系统通过与HIS系统的无缝对接,实现数据网络化采集、评价结果透明化管理及奖金分配自动化生成。系统涵盖科室和个人绩效考核、医疗质量考核、数据采集、绩效工资核算、收支核算、工作量统计、单项奖惩等功能,提升绩效评估的全面性、准确性和公正性。技术栈采用B/S架构,前后端分别基于Spring Boot和Avue框架。
|
2月前
|
Java API 数据库
构建RESTful API已经成为现代Web开发的标准做法之一。Spring Boot框架因其简洁的配置、快速的启动特性及丰富的功能集而备受开发者青睐。
【10月更文挑战第11天】本文介绍如何使用Spring Boot构建在线图书管理系统的RESTful API。通过创建Spring Boot项目,定义`Book`实体类、`BookRepository`接口和`BookService`服务类,最后实现`BookController`控制器来处理HTTP请求,展示了从基础环境搭建到API测试的完整过程。
58 4
|
2月前
|
Java API 数据库
如何使用Spring Boot构建RESTful API,以在线图书管理系统为例
【10月更文挑战第9天】本文介绍了如何使用Spring Boot构建RESTful API,以在线图书管理系统为例,从项目搭建、实体类定义、数据访问层创建、业务逻辑处理到RESTful API的实现,详细展示了每个步骤。通过Spring Boot的简洁配置和强大功能,开发者可以高效地开发出功能完备、易于维护的Web应用。
73 3
|
1月前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。首先,创建并配置 Spring Boot 项目,实现后端 API;然后,使用 Ant Design Pro Vue 创建前端项目,配置动态路由和菜单。通过具体案例,展示了如何快速搭建高效、易维护的项目框架。
115 62
|
16天前
|
存储 缓存 Java
Spring面试必问:手写Spring IoC 循环依赖底层源码剖析
在Spring框架中,IoC(Inversion of Control,控制反转)是一个核心概念,它允许容器管理对象的生命周期和依赖关系。然而,在实际应用中,我们可能会遇到对象间的循环依赖问题。本文将深入探讨Spring如何解决IoC中的循环依赖问题,并通过手写源码的方式,让你对其底层原理有一个全新的认识。
38 2
|
19天前
|
负载均衡 Java 开发者
深入探索Spring Cloud与Spring Boot:构建微服务架构的实践经验
深入探索Spring Cloud与Spring Boot:构建微服务架构的实践经验
62 5
|
1月前
|
人工智能 前端开发 Java
基于开源框架Spring AI Alibaba快速构建Java应用
本文旨在帮助开发者快速掌握并应用 Spring AI Alibaba,提升基于 Java 的大模型应用开发效率和安全性。
基于开源框架Spring AI Alibaba快速构建Java应用
|
23天前
|
消息中间件 Java Kafka
Spring Boot 与 Apache Kafka 集成详解:构建高效消息驱动应用
Spring Boot 与 Apache Kafka 集成详解:构建高效消息驱动应用
36 1
|
1月前
|
前端开发 Java 开发者
Spring生态学习路径与源码深度探讨
【11月更文挑战第13天】Spring框架作为Java企业级开发中的核心框架,其丰富的生态系统和强大的功能吸引了无数开发者的关注。学习Spring生态不仅仅是掌握Spring Framework本身,更需要深入理解其周边组件和工具,以及源码的底层实现逻辑。本文将从Spring生态的学习路径入手,详细探讨如何系统地学习Spring,并深入解析各个重点的底层实现逻辑。
63 9
下一篇
DataWorks