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


目录
相关文章
|
5月前
|
XML Java 测试技术
《深入理解Spring》:IoC容器核心原理与实战
Spring IoC通过控制反转与依赖注入实现对象间的解耦,由容器统一管理Bean的生命周期与依赖关系。支持XML、注解和Java配置三种方式,结合作用域、条件化配置与循环依赖处理等机制,提升应用的可维护性与可测试性,是现代Java开发的核心基石。
|
XML Java 测试技术
Spring IOC—基于注解配置和管理Bean 万字详解(通俗易懂)
Spring 第三节 IOC——基于注解配置和管理Bean 万字详解!
888 26
|
7月前
|
设计模式 Java 开发者
如何快速上手【Spring AOP】?从动态代理到源码剖析(下篇)
Spring AOP的实现本质上依赖于代理模式这一经典设计模式。代理模式通过引入代理对象作为目标对象的中间层,实现了对目标对象访问的控制与增强,其核心价值在于解耦核心业务逻辑与横切关注点。在框架设计中,这种模式广泛用于实现功能扩展(如远程调用、延迟加载)、行为拦截(如权限校验、异常处理)等场景,为系统提供了更高的灵活性和可维护性。
|
11月前
|
前端开发 Java 物联网
智慧班牌源码,采用Java + Spring Boot后端框架,搭配Vue2前端技术,支持SaaS云部署
智慧班牌系统是一款基于信息化与物联网技术的校园管理工具,集成电子屏显示、人脸识别及数据交互功能,实现班级信息展示、智能考勤与家校互通。系统采用Java + Spring Boot后端框架,搭配Vue2前端技术,支持SaaS云部署与私有化定制。核心功能涵盖信息发布、考勤管理、教务处理及数据分析,助力校园文化建设与教学优化。其综合性和可扩展性有效打破数据孤岛,提升交互体验并降低管理成本,适用于日常教学、考试管理和应急场景,为智慧校园建设提供全面解决方案。
617 70
|
9月前
|
XML 人工智能 Java
Spring IOC 到底是什么?
IOC(控制反转)是一种设计思想,主要用于解耦代码,简化依赖管理。其核心是将对象的创建和管理交给容器处理,而非由程序直接硬编码实现。通过IOC,开发者无需手动new对象,而是由框架负责实例化、装配和管理依赖对象。常见应用如Spring框架中的BeanFactory和ApplicationContext,它们实现了依赖注入和动态管理功能,提升了代码的灵活性与可维护性。
230 1
|
10月前
|
XML Java 数据格式
Spring IoC容器的设计与实现
Spring 是一个功能强大且模块化的 Java 开发框架,其核心架构围绕 IoC 容器、AOP、数据访问与集成、Web 层支持等展开。其中,`BeanFactory` 和 `ApplicationContext` 是 Spring 容器的核心组件,分别定位为基础容器和高级容器,前者提供轻量级的 Bean 管理,后者扩展了事件发布、国际化等功能。
262 18
|
XML Java 数据格式
京东一面:spring ioc容器本质是什么? ioc容器启动的步骤有哪些?
京东一面:spring ioc容器本质是什么? ioc容器启动的步骤有哪些?
|
XML Java 数据格式
【SpringFramework】Spring IoC-基于XML的实现
本文主要讲解SpringFramework中IoC和DI相关概念,及基于XML的实现方式。
294 69
|
12月前
|
Java 容器 Spring
什么是Spring IOC 和DI ?
IOC : 控制翻转 , 它把传统上由程序代码直接操控的对象的调用权交给容 器,通过容器来实现对象组件的装配和管理。所谓的“控制反转”概念就是对组件对象控制权的转 移,从程序代码本身转移到了外部容器。 DI : 依赖注入,在我们创建对象的过程中,把对象依赖的属性注入到我们的类中。

热门文章

最新文章