首页 > 编程语言 >百万架构师第十一课:源码分析:Spring 源码分析:Spring源码分析前篇|JavaGuide

百万架构师第十一课:源码分析:Spring 源码分析:Spring源码分析前篇|JavaGuide

时间:2025-01-07 12:30:47浏览次数:3  
标签:分析 配置文件 Spring 入口 Bean 源码 加载

穷举法:

把生活所见所闻全部归纳到我们所学的知识体系中,加以思考变成自己的东西。(举例子)

类比法:

把自己熟悉的方法(利用自己已有的知识体系),去对比学习新的知识。

Spring 怎么学?

1. 环境准备好了没有?
2. 项目里边有红叉:x:

学习源码,不一定要让项目跑起来,报一两个红叉其实不要紧。

看:是什么?能干啥
想:为什么?
实践:怎么做?

调试的时候,完全可以在运行环境中,导入 jar 包就能调试(有针对性地打断点)

3. 如何从 0 -1 去学习
1.要先看官网

然后去网上找资料参考(有了基本的概念,产生了很多问题,很多猜想)

2.然后,看项目结构

(更加具体地了解,还是产生很多猜想)

3.为什么会存在 Spring 这个东西?

能做什么,做了什么,要我来做,我该怎么做?

4.IOC、AOP、DI、BeanFactory 等这样一系列零碎的概念(人云亦云)
5.能做什么:Java 中的万能胶
6.做了什么: JAVA Bean 能够实现无缝对接
7.要我来做,我该怎么做?

所谓一个框架而言,在编写框架代码的时候,所要对接的 Bean 是不存在的。

通过预设规则,按照一定的规则去顺序加载或识别需要对接的 Bean。(反射,通过类全名字符串可以找到,并创建一个 Bean 的实例)。

规定配置文件的默认名字。

IOC:缓存起来,得把它存起来(Map 容器)
DI: getter、setter、contructor (反射、invoker)
AOP: 为了增强原始 Bean 的功能(代理技术)

没有Spring 将如何开发?

1.认识懒惰的,一切高端技术的发明都是源于人类的懒惰,何不重复地造轮子呢?
2.没有 Spring ,那是到了 Spring 出现以前的开发了。
  1. 很多设计模式需要自己去整合,当然,你也可以选择不用设计模式(只不过多走点弯路而已)
  2. 所有的封装、集成、多态、增强、依赖、模块管理等等工作都有自己制定统一的规则(百花齐放、百家争鸣)
  3. 所有的创建对象、配置依赖关系、资源的重复利用、拓展性的手动操作
Spring 出现以后,JAVA 程序员的春天真的来了,解放了双手。
七分猜测,三分验证(七分靠打拼,三分天注定)

如果猜对了,就会有一种成就感。

看源码,第一遍是非常痛苦的。

看第二遍、看第三遍思路越来越清晰。

带着思考去找入口(主入口、隐藏的入口)

// 要想跑起来,运行的是 run 方法里边的代码
new Thread(){
    // 跑起来
    public void go(){

    }
    public void run(){

    }
}

RMI 中

// socket
socket.write(); // 入口

// ServerSocket
    while(true){
        server.accept();
    }    

看 Tomcat 的源码

  • Main 方法

Spring

  • ClassPathXMLApplicationContext app 显示的入口
    • 查找用户需要加载哪些配置文件
    • 读取配置文件
    • 注册

  • 定位
  • 加载
  • 注册

预习效果调查?

第二轮:预习文档老师不会带大家去课件了,自己在课前看,作为上课的补充资料(用于帮助大家去猜测资料)

:画图,梳理思路,答疑
来源于: https://javaguide.net

微信公众号:不止极客

标签:分析,配置文件,Spring,入口,Bean,源码,加载
From: https://blog.csdn.net/shengtianbanzi_/article/details/144982549

相关文章

  • 百万架构师第九课:源码分析:Spring 源码分析:Spring5源码分析-预习资料|JavaGuide
    三、Spring5概述Spring是一个开源的轻量级JavaSE(Java标准版本)/JavaEE(Java企业版本)开发应用框架,其目的是用于简化企业级应用程序开发。应用程序是由一组相互协作的对象组成。而在传统应用程序开发中,一个完成的应用是由一组相互协作的对象组成。所以开发一个应用除......
  • ssm自习室管理和预约系统p7df4(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、项目背景与意义随着教育资源的紧张和学生学习需求的增加,自习室的管理和预约成为了一个亟待解决的问题。传统的自习室管理方式存在效率低下、资......
  • ssm智能组卷16l75--(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、研究背景随着教育信息化的快速发展,传统的试卷出题方式已经无法满足现代教育的高效、个性化需求。智能组卷系统的出现,旨在解决教师出题效率低、......
  • ssm智慧社区家政服务平台设nz559程序+源码+数据库+调试部署+开发环境
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、项目背景随着现代城市生活节奏的加快,社区居民对于家政服务的需求日益增长。然而,传统的家政服务获取方式存在信息不透明、供需匹配效率低等问题......
  • Python语言中进程、线程、协程执行效率分析
    python语言中进程、线程、协程执行效率比较。问题:python语言中进程、线程、协程执行速度哪个最快?在Python中,进程、线程和协程的执行速度不能简单地进行比较,因为它们的性能取决于多种因素,包括任务类型、I/O操作、CPU密集型计算、操作系统调度策略以及Python解释器的实现。进......
  • Eureka加密 及Gateway搭建 - 基于SpringBoot不同版本配置方式
    前言:在最近开发过程中偶遇根据SpringBoot不同版本导致配置方式不一致等问题通用:Eureka服务配置Server端:一、引入依赖spring-boot-starter-security<dependencies> <!--Eureka声明依赖--><dependency><groupId>org.springframework.cloud</groupId>......
  • 基于SpringBoot的生鲜交易系统设计与实现
    1.1项目研究的背景困扰交易市场的许多问题当中,生鲜交易管理一定是交易市场不敢忽视的一块。但是管理好生鲜交易又面临很多麻烦需要解决,例如有几个方面:第一,生鲜市场往往人数都比较多,如何保证能够管理到每一个商家,如何在工作琐碎,记录繁多的情况下将生鲜交易的当前情况反......
  • 客户精准定位营销:助贷系统数据分析能力攻克转化难题
    在竞争激烈的助贷市场中,精准营销一直是众多助贷公司难以攻克的难关。传统营销方式往往采取广撒网的策略,大规模投放广告、盲目拨打推销电话、随意发放传单,耗费了大量的人力、物力和财力,却收效甚微。其根源在于对目标客户缺乏精准认知,不了解客户的真正需求、偏好以及痛点,导致营销......
  • Ray 源码分析系列(12)—python/ray._private
    前言这个文件夹下放置了python最核心的代码,从文件夹命名就可以知道,这部分的代码并不是用户可修改的部分,而是ray进行任务管理、节点交互、GCS通信等核心功能实现。核心实现概览文件名/模块名功能描述services.py负责Ray的核心服务管理,包括启动和停止Ray的......
  • 基于单片机的速度里程表设计(论文+源码)
    1  系统方案本次智能速度里程表的总体架构如图2-1所示,在硬件上包括了STC89C52单片机,电机,显示模块,报警模块,DS1302时钟模块,超速检测模块,按键等等。在软件设计功能的功能上,按下开关按键驱动电机,由霍尔传感器来检测脉冲信号,模拟汽车行驶,并且可以通过霍尔传感器进行实时速度,如果......