这门课解决什么问题

很多有几年经验的 Java 开发者都会遇到一个瓶颈:日常写业务接口、做数据库增删改查已经很熟练,但遇到线上 Bean 循环依赖、事务失效、MyBatis 代理对象报错这类底层问题时,往往只能靠搜索引擎碰运气。这门资料聚焦 Spring 和 MyBatis 两个核心框架的源码,解决的不是“怎么用框架”,而是“框架底层到底怎么运转”。它适合已经能独立写 Web 应用、想往高级开发或架构方向走的人。如果你刚学完 Java 基础和基本语法,直接看源码会非常吃力,建议先有实际项目经验再来看。

建议先看哪几块,资料怎么配合

拿到资料后,不要从第一行源码顺着往下看,那样很容易迷失在细节里。建议先从 Spring 的核心工厂体系入手,重点看 ListableBeanFactory 相关的实现逻辑,理解 Bean 的注册和实例化过程;MyBatis 部分则先看代理模式和插件机制。资料里包含了画图工具和完整的示例工程,正确的用法是:边看源码解析,边在示例工程里打断点跟踪调用链路。遇到复杂的对象关系,直接用画图工具把 BeanFactory 的继承结构画出来,比纯看代码效率高很多。把课程里的代码拉到本地跑起来,配合源码断点调试,才是真正有效的学习方式。

学完能独立做什么

看完这套源码分析,你应该能在遇到框架级报错时,直接点进源码定位问题原因,而不是在论坛里盲目搜报错信息。具体来说,你能独立排查 Spring 依赖注入失败的原因,能看懂 MyBatis 插件是如何拦截 SQL 执行的,也能在需要扩展框架功能时,知道该重写哪个接口或继承哪个类。对于准备技术面试的人来说,这能让你在讲框架原理时有具体的代码细节支撑,而不是背概念。最终目标不是记住每一行代码,而是建立一套阅读开源框架源码的方法,以后换到其他框架也能快速上手分析。


ListableBeanFactory :最重要的工厂也是Spring提供的最强大的工厂,实现了 Spring定义的绝大多数的工厂接口 都是被这个接口所实现的,

课程目录

*   drawio安装程序/

  *   draw.io-16.1.2-windows-installer.exe

  *   draw.io-arm64-16.1.2.dmg

  *   draw.io-x64-16.1.2.dmg

*   mybaits源码分析/

  *   代码/

    *   baizhi-mybatis01/

      *   pom.xml

      *   src/

        *   main/

          *   java/

            *   com/

              *   baizhiedu/

                *   cache

                *   dao

                *   entity

                *   filter

                *   plugins

                *   proxy

                *   util

                *   xml

          *   resources/

            *   AccountDAOMapper.xml

            *   UserDAOMapper.xml

            *   echcache.xml

            *   log4j.properties

            *   mybatis-config.xml

            *   redis.properties

            *   redisCache.properties

            *   users.xml

            *   xxxMapper.xml

        *   test/

          *   java/

            *   com/

              *   baizhiedu

      *   target/

        *   classes/

          *   AccountDAOMapper.xml

          *   UserDAOMapper.xml

          *   com/

            *   baizhiedu/

              *   cache

              *   dao

              *   entity_20230520_133538

              *   filter

              *   plugins

              *   proxy

              *   util

              *   xml

          *   echcache.xml

          *   log4j.properties

          *   mybatis-config.xml

          *   redis.properties

          *   redisCache.properties

          *   users.xml

          *   xxxMapper.xml

        *   generated-sources/

          *   annotations

        *   generated-test-sources/

          *   test-annotations

        *   test-classes/

          *   com/

            *   baizhiedu/

              *   TestMybaits2$1.class

              *   TestMybaits2.class

              *   TestMybatis3.class

              *   TestMybatis4.class

              *   TestMybatis.class

              *   TestMybatisRedis.class

  *   笔记/

    *   Mybaits缓存.drawio

    *   mybatis拦截器开发.drawio

    *   复习.drawio

    *   未命名绘图2.drawio

    *   百知教育 — Mybatis源码分析.assets/

      *   image-20201228204313337.png

      *   image-20201228204347155.png

      *   image-20201228204919709.png

    *   百知教育 — Mybatis源码分析.md

  *   视频/

    *   mybatis源码分析01

    *   mybatis源码分析02

    *   mybatis源码分析03

    *   mybatis源码分析04

    *   mybatis源码分析05

    *   mybatis源码分析06

    *   mybatis源码分析07

    *   mybatis源码分析08

    *   mybatis源码分析09

    *   mybatis源码分析10-1

    *   mybatis源码分析10-2

    *   mybatis源码分析11

    *   mybatis源码分析12

    *   mybatis源码分析13

    *   mybatis源码分析14

    *   mybatis源码分析15

    *   mybatis源码分析16

*   spring源码分析/

  *   spring-framework-5.1.x.zip

  *   代码/

    *   spring-source/

      *   pom.xml

      *   spring-source.iml

      *   src/

        *   main/

          *   java/

            *   com/

              *   aop

              *   aoppost_20230520_134058

              *   application

              *   aware

              *   baizhi

              *   baizhiedu

              *   bean

              *   beanfactoryprocessor

              *   configuration

              *   mybatis

              *   propertyeditor

              *   proxy

              *   spring/

                *   dao

                *   mybatis

              *   tx/

                *   annotation

                *   xml

          *   resources/

            *   META-INF/

              *   spring.handlers

              *   spring.schemas

              *   user.xsd

            *   app.properties

            *   applicationContext1.xml

            *   applicationContext-parents.xml

            *   applicationContext.xml

            *   applicationContext_tx.xml

            *   com.mybatis/

              *   UserDAOMapper.xml

            *   log4j.properties

        *   test/

          *   java/

            *   com/

              *   baizhiedu

        *   useDigram/

          *   doGetBean.drawio

      *   target/

        *   classes/

          *   META-INF/

            *   spring.handlers

            *   spring.schemas

            *   user.xsd

          *   app.properties

          *   applicationContext1.xml

          *   applicationContext-parents.xml

          *   applicationContext.xml

          *   applicationContext_tx.xml

          *   com/

            *   aop/

              *   AppConfig.class

              *   IUserService.class

              *   MyAspect.class

              *   TestAOP.class

              *   TestCglibProxy$1.class

              *   TestCglibProxy.class

              *   TestJDKProxy.class

              *   UserService.class

            *   aoppost/

              *   AppConfig.class

              *   IUserService.class

              *   MyAfter.class

              *   MyAopAspectJPostProcessor1.class

              *   MyAopAspectJPostProcessor$1.class

              *   MyAopAspectJPostProcessor.class

              *   MyBefore.class

              *   MyEnableAspectJAutoProxy.class

              *   MyInvocationHandler.class

              *   MyPointCut$1.class

              *   MyPointCut$2.class

              *   MyPointCut.class

              *   MyPointCutAdvisor.class

              *   MyPointcutAdvisor1.class

              *   TestAOP.class

              *   UserServiceImpl.class

            *   application/

              *   AppConfig.class

              *   MyImportBeanDefinitionRegister.class

              *   MyImportSelector.class

              *   SpringApplication.class

              *   Test1.class

              *   TestApplication.class

              *   User.class

            *   aware/

              *   A.class

            *   baizhi/

              *   Account.class

              *   AppConfig.class

              *   Product.class

              *   TestAnnotationSpring.class

            *   baizhiedu/

              *   Account.class

              *   Address.class

              *   Before.class

              *   MyBeanPostProcessor.class

              *   MyNamespaceHandler.class

              *   Product.class

              *   User.class

              *   UserBeanDefinitionParser.class

              *   UserDAO.class

              *   UserDAOImpl.class

              *   UserService.class

              *   UserServiceImpl.class

            *   bean/

              *   A.class

              *   AppConfig.class

              *   B.class

              *   C.class

              *   D.class

              *   E.class

              *   InnerClass$InnerConfiugration.class

              *   InnerClass.class

              *   MyBeanDefinitionRegistry.class

              *   MyBeanDefinitionRegistryPostProcssor.class

              *   MyImportSelector.class

              *   TestBean.class

            *   beanfactoryprocessor/

              *   A.class

              *   AppConfig.class

              *   MyBeanDefinitionRegistryPostProcessor.class

              *   MyBeanPostProcessor.class

              *   Test1.class

            *   configuration/

              *   A.class

              *   AppConfig.class

              *   TestCglib$1.class

              *   TestCglib.class

              *   TestConfiguration.class

            *   mybatis/

              *   AppConfig.class

              *   MyFactoryBean.class

              *   MyImportRegiser.class

              *   Test1.class

              *   UserDAO.class

              *   UserServiceImpl.class

            *   propertyeditor/

              *   Customer.class

              *   TestEdter.class

            *   proxy/

              *   A.class

              *   AppConfig.class

              *   B.class

              *   MyAspect.class

              *   TestProxy.class

            *   spring/

              *   dao

              *   mybatis

            *   tx/

              *   annotation

              *   xml

          *   com.mybatis/

            *   UserDAOMapper.xml

          *   log4j.properties

        *   generated-sources/

          *   annotations

        *   generated-test-sources/

          *   test-annotations

        *   test-classes/

          *   com/

            *   baizhiedu

    *   test/

      *   java/

        *   com/

          *   baizhi/

            *   Test1.java

            *   User.java

          *   foo/

            *   Component.java

            *   ComponentBeanDefinitionParser.java

            *   ComponentBeanDefinitionParserTests.java

            *   ComponentFactoryBean.java

            *   ComponentNamespaceHandler.java

        *   org/

          *   springframework/

            *   aop/

              *   config

              *   framework/

                *   autoproxy

            *   cache/

              *   annotation

            *   context/

              *   annotation/

                *   jsr330

                *   scope

            *   core/

              *   env/

                *   scan1

                *   scan2

            *   expression/

              *   spel/

                *   support

            *   scheduling/

              *   annotation

            *   transaction/

              *   annotation

      *   resources/

        *   META-INF/

          *   spring.handlers

          *   spring.schemas

        *   applicationContext.xml

        *   com/

          *   foo/

            *   component-config.xml

            *   component.xsd

        *   log4j2-test.xml

        *   org/

          *   springframework/

            *   aop/

              *   config

              *   framework/

                *   autoproxy

            *   context/

              *   annotation/

                *   ltw

            *   core/

              *   env

            *   transaction/

              *   annotation

            *   util

            *   web/

              *   util

  *   笔记/

    *   3月17日课堂随笔.pdf

    *   3月22日课堂随笔.pdf

    *   3月26日.drawio

    *   3月31日.drawio

    *   4月2日.drawio

    *   4月6日.drawio

    *   4月7日.drawio

    *   4月9日.drawio

    *   4月11日.drawio

    *   4月12日.drawio

    *   4月14日.drawio

    *   4月18日AOP.drawio

    *   4月24日AOP.drawio

    *   4月25日AOP(1).drawio

    *   4月25日AOP.drawio

    *   4月25日事务.drawio

    *   4月28日事务.drawio

    *   5月11日事务.drawio

    *   5月12日事务(1).drawio

    *   5月12日事务.drawio

    *   5月14日Mybais与Spring整合源码.drawio

    *   Spring BeanDefinition 创建注册过程.pdf

    *   Spring中注册一个Bean常见方式.pdf

    *   Spring源码分析3.pdf

    *   spring源码分析.drawio

    *   spring源码分析笔记2.drawio

    *   随堂笔记.pdf

  *   视频/

    *   01 spring源码分析

    *   02 spring源码分析

    *   spring源码分析03

    *   spring源码分析04

    *   spring源码分析05

    *   spring源码分析06_1

    *   spring源码分析06_2

    *   spring源码分析07

    *   spring源码分析08

    *   spring源码分析09

    *   spring源码分析10

    *   spring源码分析11

    *   spring源码分析12

    *   spring源码分析13

    *   spring源码分析14

    *   spring源码分析15

    *   spring源码分析16

    *   spring源码分析17-1

    *   spring源码分析17-2

    *   spring源码分析18

    *   spring源码分析19-1

    *   spring源码分析19-2

    *   spring源码分析20

    *   spring源码分析21

    *   spring源码分析22

    *   spring源码分析23

    *   spring源码分析24

    *   spring源码分析25

    *   spring源码分析26

    *   spring源码分析27

    *   spring源码分析28

    *   spring源码分析29

    *   spring源码分析30

    *   spring源码分析31

    *   spring源码分析32