【Spring源码系列- IOC】

1

【Spring源码】0.安装Gradle环境

2

【Spring源码】1.下载与编译_pom relocation to an other version number is not f

3

【Spring源码】2.试个水先~Debug找到传说中的三级缓存(图解向,堆图预警)

4

【Spring源码】3. xml文件如何转换成BeanDefinition(主要涉及prepareRefresh()+ obtainFreshBeanFactory()两个函数,图解向,堆图预警)_spring xml转bean

5

【Spring源码】4. 自己搞个标签?~自定义标签保姆级全过程(图解向,堆图预警)

6

【Spring源码】5.spring的bean工厂准备工作(prepareBeanFactory(beanFactory)

7

【Spring源码】6. Spring扩展自定义属性编辑器保姆级教程

8

【Spring源码】7. 如何添加自定义的BeanFactoryPostProcessor

9

【Spring源码】8. 捋下invokeBeanFactoryPostProcessors()主要处理流程

10

【Spring源码】9. 超级重要的ConfigurationClassPostProcessor

11

【Spring源码】10. 递归调用的processConfigurationClass()方法

12

【Spring源码】11. 我是注解类不?checkConfigurationClassCandidate()注解类判断方法详解

13

【Spring源码】12. 注册bean处理器registerBeanPostProcessors()

14

【Spring源码】13. 国际化处理initMessageSource()源码解析

【补充内容】【保姆级】SpringBoot项目中的i18n国际化

15

【Spring源码】14. 消息多播器(观察者模式)

【补充内容】【保姆级示例向】观察者模式

16

【Spring源码】15. Bean的创建过程(1.概述篇)

17

【Spring源码】16. Bean的创建过程(2)

18

【Spring源码】17.创建Bean这篇认真的@(・●・)@

【补充内容】

【保姆级·创建对象】如何通过Supplier创建对象

【保姆级·创建对象】如何通过factory-method创建对象

【保姆级·创建对象】如何利用resolveBeforeInstantiation()在预处理阶段返回一个Bean的实例对象

19

【Spring源码】18. factory-method创建对象关键函数详解:instantiateUsingFactoryMethod()

20

【Spring源码】19. 没合适的构造器?找determineCandidateConstructors()!

21

【Spring源码】20. MergedBeanDefinitionPostProcessor修改/合并bean定义

【补充内容】

【保姆级】@PostConstruct & @PreDestroy使用示例

【Spring源码】AutowiredAnnotationBeanPostProcessor.postProcessMergedBeanDefinition()详解

【Spring源码】CommonAnnotationBeanPostProcessor.postProcessMergedBeanDefinition()详解

22

【Spring源码】21. 初探循环依赖

【补充内容】

【保姆级】手把手Debug循环依赖的整体流程

【实践向】当移除了三级缓存……

【分析向】没有三级缓存会导致什么?

【Spring源码】插播一个创建代理对象的wrapIfNecessary()方法

23

【Spring源码】22. 属性填充populateBean()详解

【补充内容】

【Spring源码】自动注入·名称:autowireByName()详解

【Spring源码】自动注入·类型:autowireByType()详解

【Spring源码】属性值的解析与赋值:populateBean().applyPropertyValues()

【保姆级】超超超简单的自定义注解实现@Autowired同款功能

24

【Spring源码】23. 执行初始化逻辑:initializeBean()

为什么要安装Gradle呀?~~~

Spring 团队考虑由 Maven 切换到 Gradle 的主要原因为了减少构建项目所需的时间。 在开发和测试过程中,等待构建完成所花费的时间增加了修复错误和实现新功能所花费的时间。

下载 ⏬ Gradle

先上地址--->

Gradle | ReleasesFind binaries and reference documentation for current and past versions of Gradle.https://gradle.org/releases/

那么下载哪个版本呢?

如果你下载的是比较新的spring源码,项目根目录下的build.gradle文件中会有"me.champeau.jmh"的版本设置,如下图:

JMH(jmh-gradle-plugin)的版本是0.6.6,由于JMH的版本需要跟gradle相对应,所以要下载的gradle的具体的版本请查看https://github.com/melix/jmh-gradle-plugin

所以按照我第一次下载的spring源码版本(各种报错= =),JMH的版本是0.6.6对应的gradle版本是6.8+。

​否则可能就会报Only Project build scripts can contain plugins {} blocks等异常,如下图:

​此处多谢知难行难1985的博文https://blog.csdn.net/wdquan19851029/article/details/117365317

如果要用新版本的Spring源码进行编译,可能需要下个JDK17了,但是不知道有没有同学像我一样,一直用的是JDK8呀 = =(呃,虽然可以多环境,,BUT...臣妾还是想用8...)

>>> 想用JDK8的同学可以继续看下去啦

由于JDK8建议选择5.0-5.6.4版本的Gradle(由于版本产生的问题及其浪费时间,建议按照本系列文中的版本号进行安装,能极大提高学习效率,强推)

解压

双击压缩包

​添加环境变量

打开.bash_profile文件

aqin1012@aqin1012deMacBook-Pro projects % vim ~/.bash_profile

在 .bash_profile文件中添加如下环境变量

# 在文件的最后加上如下配置:
export PATH=$PATH:{放置gradle的绝对路径}/gradle-5.6.4/bin

安装

在命令行输入gradle

测试

命令行输入gradle进行测试

​如果出现上述错误,则在命令行输入

java -version
  • 如果显示找不到,则证明Java环境变量没配好 (那需要度娘配个环境叻)
  • 如果正常显示(如下图)
    • 则需要刷新下bash_profile文件⬇
    • source ~/.bash_profile

然后再次执行gradle

​构建配置(本文使用的是IDEA)

1⃣️ 选择自己本地gradle的路径

2⃣️ 选择Specified location,后面选择本地gradle的路径

3⃣️ 选择本地的1.8版本JDK

查看编译结果

如下图不报错即表示编译成功

修改镜像配置(可跳过,如果编译过程过慢建议进行修改)

1.settings.gradle文件

打开项目根目录下的settings.gradle文件,添加阿里云镜像仓库

​2. build.gradle文件

Logo

欢迎加入西安开发者社区!我们致力于为西安地区的开发者提供学习、合作和成长的机会。参与我们的活动,与专家分享最新技术趋势,解决挑战,探索创新。加入我们,共同打造技术社区!

更多推荐