Spring Ioc源码深入剖析预备知识1

简介: Spring Ioc源码深入剖析预备知识1

1 Spring源码环境编译与构建

工欲善其事 必先利其器

源码调试搭建步骤:

七大步骤

1.1 自动化构建gradle介绍

引言:

为什么要讲解gradle?

因为从Sping5开始,官方就开始使用gradle来构建环境了

接下来,我们所有的环境都要基于gradle

什么是gradle

Gradle是一个项目自动化构建工具。

是Apache的一个基于Ant 和Maven的软件,用于项目的依赖管理。

项目的构建经历了三个时代:

引言:

为什么要讲解gradle?

因为从Sping5开始,官方就开始使用gradle来构建环境了

接下来,我们所有的环境都要基于gradle

Apache Ant(2000 年左右)

Maven(2004年)

Gradle(2012 年左右)

Spring(5.0开始) 等优秀的开源项目都将自己的项目从 Maven 迁移到了 Gradle

Google 官方 Android 开发的 IDE Android Studio 也默认使用了 Gradle 进行构建。

1.2 源码环境搭建与编译

四大步骤

1)安装gralde环境

下载gradle,建议不要下载太高的版本,版本太高,后面在idea中编译的时候有些spring的组件下载不

https://services.gradle.org/distributions/

https://gradle.org/releases/

gralde的安装非常简单,就和配置jdk一样的道理,将主目录配置到环境变量即可

设置JAVA_HONME和GRADLE_HOME

然后cmd打开窗口,测试一下是否安装成功

gradle -V

tips:常见问题

如果不能正常查看版本号,说明jdk版本太高,需要将JAVA_HOME修改为8

2)下载Spring源码

进入Spring官网,然后从下面的窗口进入到github

https://spring.io/projects/spring-framework#learn

直接从github下载

https://github.com/spring-projects/spring-framework

3)源码环境编译

gradlew.bat

执行项目下的gradlew.bat, 等待构建完成…

4)IDEA导入源码

注意:这里必须使用import Project,不能使用open形式打开

然后点击 Finish 就会进入项目的自动构建阶段了。

Spring 构建完成(耗时比较长),如下图所示

正在编译

关键步骤

如果不运行当前的compileTestJava,会有很多类找不到

手工删除上面的 build;如果遇到找不的class依赖,右键run

5)常见错误

如果构建非常慢,可以在C:\用户\下创建【init.gradle】文件

allprojects {
  repositories {
    maven {
      name "ALIYUN_CENTRAL_URL" // name 可以不需要
      url 'https://maven.aliyun.com/nexus/content/repositories/central'
   }
    maven {
      name "ALIYUN_JCENTER_URL"
      url 'https://maven.aliyun.com/nexus/content/repositories/jcenter'
   }
    maven {
      name "ALIYUN_GOOGLE_URL"
      url 'https://maven.aliyun.com/nexus/content/repositories/google'
   }
 }
}

2 构建gradle源码测试项目

2.1 开始搭建测试项目

四步:

1、新建测试module项目

首先我们在 Spring 源码项目中新增一个测试项目,点击 New -> Module… 创建一个 Gradle 的 Java 项目

2、详细信息

3、设置gradle

4、完善信息

在 build.gradle 中添加对 Spring 源码的依赖:

compile(project(‘:spring-context’))

spring-context 会自动将 spring-core、spring-beans、spring-aop、spring-expression 这几个

基础 jar 包带进来。

接着,我们需要在项目中创建一个 bean 和配置文件(application.xml)及启动文件(Main.java)

接口如下:

package com.spring.test.service;
public interface UserService {
public String getName();
}

实现类

package com.spring.test.impl;
import com.spring.test.service.UserService;
public class UserServiceImpl implements UserService {
@Override
public String getName() {
return "Hello World";
   }
}

Main代码如下

public class Main {
public static void main(String[] args) {
ApplicationContext context =newClassPathXmlApplicationContext("classpath*:application.xml");
UserService userService = context.getBean(UserService.class);
System.out.println(userService);
// 这句将输出: hello world
System.out.println(userService.getName());
   }
}

配置文件 application.xml(在 resources 中)配置如下:

<?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 id="userService" class="com.spring.test.impl.UserServiceImpl"/>
</beans>

运行

输出如下

com.spring.test.impl.UserServiceImpl@2aa5fe93
Hello World


目录
相关文章
|
2月前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
93 2
|
2月前
|
数据采集 监控 前端开发
二级公立医院绩效考核系统源码,B/S架构,前后端分别基于Spring Boot和Avue框架
医院绩效管理系统通过与HIS系统的无缝对接,实现数据网络化采集、评价结果透明化管理及奖金分配自动化生成。系统涵盖科室和个人绩效考核、医疗质量考核、数据采集、绩效工资核算、收支核算、工作量统计、单项奖惩等功能,提升绩效评估的全面性、准确性和公正性。技术栈采用B/S架构,前后端分别基于Spring Boot和Avue框架。
101 5
|
10天前
|
XML Java 数据格式
【SpringFramework】Spring IoC-基于XML的实现
本文主要讲解SpringFramework中IoC和DI相关概念,及基于XML的实现方式。
99 69
|
9天前
|
Java Spring 容器
【SpringFramework】Spring IoC-基于注解的实现
本文主要记录基于Spring注解实现IoC容器和DI相关知识。
40 21
|
15天前
|
设计模式 XML Java
【23种设计模式·全精解析 | 自定义Spring框架篇】Spring核心源码分析+自定义Spring的IOC功能,依赖注入功能
本文详细介绍了Spring框架的核心功能,并通过手写自定义Spring框架的方式,深入理解了Spring的IOC(控制反转)和DI(依赖注入)功能,并且学会实际运用设计模式到真实开发中。
【23种设计模式·全精解析 | 自定义Spring框架篇】Spring核心源码分析+自定义Spring的IOC功能,依赖注入功能
|
1天前
|
监控 JavaScript 数据可视化
建筑施工一体化信息管理平台源码,支持微服务架构,采用Java、Spring Cloud、Vue等技术开发。
智慧工地云平台是专为建筑施工领域打造的一体化信息管理平台,利用大数据、云计算、物联网等技术,实现施工区域各系统数据汇总与可视化管理。平台涵盖人员、设备、物料、环境等关键因素的实时监控与数据分析,提供远程指挥、决策支持等功能,提升工作效率,促进产业信息化发展。系统由PC端、APP移动端及项目、监管、数据屏三大平台组成,支持微服务架构,采用Java、Spring Cloud、Vue等技术开发。
|
14天前
|
存储 Java 应用服务中间件
【Spring】IoC和DI,控制反转,Bean对象的获取方式
IoC,DI,控制反转容器,Bean的基本常识,类注解@Controller,获取Bean对象的常用三种方式
|
1月前
|
存储 缓存 Java
Spring面试必问:手写Spring IoC 循环依赖底层源码剖析
在Spring框架中,IoC(Inversion of Control,控制反转)是一个核心概念,它允许容器管理对象的生命周期和依赖关系。然而,在实际应用中,我们可能会遇到对象间的循环依赖问题。本文将深入探讨Spring如何解决IoC中的循环依赖问题,并通过手写源码的方式,让你对其底层原理有一个全新的认识。
57 2
|
2月前
|
前端开发 Java 开发者
Spring生态学习路径与源码深度探讨
【11月更文挑战第13天】Spring框架作为Java企业级开发中的核心框架,其丰富的生态系统和强大的功能吸引了无数开发者的关注。学习Spring生态不仅仅是掌握Spring Framework本身,更需要深入理解其周边组件和工具,以及源码的底层实现逻辑。本文将从Spring生态的学习路径入手,详细探讨如何系统地学习Spring,并深入解析各个重点的底层实现逻辑。
73 9
|
2月前
|
XML 缓存 Java
搞透 IOC、Spring IOC ,看这篇就够了!
本文详细解析了Spring框架的核心内容——IOC(控制反转)及其依赖注入(DI)的实现原理,帮助读者理解如何通过IOC实现组件解耦,提高程序的灵活性和可维护性。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。