美文网首页
一个故事带你理解spring的核心

一个故事带你理解spring的核心

作者: 生不悔改 | 来源:发表于2022-03-23 13:31 被阅读0次

说明

本文只是用一个形象的案例,带你快速去理解spring的核心,spring是一个很优秀的java框架,它的设计思路很巧妙,实现步骤里面留了很多扩展点,我只能站在我目前的对它的使用和理简单讲解一下,具体的细节还是需要不断的翻看源码,去深入理解和学习的。

场景

现实中的工厂我们都知道。工厂是用来生产产品的,但是工厂不会无缘无故的去生产产品,它需要有订单,它才会去按照订单,生产产品,然后将生产好的产品放到仓库中,这时候,如果有客人的订单需要定制,那工厂需要看定制需求是在生产产品前做定制,还是在生产产品后做定制。例如:生产一瓶酒,我们会用统一的用纸去包装这瓶酒,客人说我要定制成木箱子装这瓶酒,那么工厂生产酒的流程不变,只是在最后包装酒的时候去换成木箱子装这瓶酒。
最后生产好的产品,我们会统一放进仓库,然后等待客户来取这些产品。
好了场景说完了,貌似和spring没有任何关联,其实从思想上,流程上,spring就和这个工厂生产产品的流程一样。

关联

介绍几个spring和现实工厂之间流程上面的联系。

工厂在生产产品前,需要拿到产品的订单

spring启动,会从xml配置文件中,或者从扫描包中拿到需要加载到IOC容器中Bean信息。

这些订单信息不一样,五花八门的

spring拿到的Bean信息也是五花八门的,所以统一用BeanDefinition去记录需要生产的Bean的信息,一个bean对应一个BeanDefinition

现在工厂不管生产什么产品,都要检查一下订单交货的时间,等等其他手续

spring中BeanDefinition都要在生产Bean之前执行BeanFactoryPostProcessor子类的postProcessBeanFactory()方法

如果此刻用户说我要改我当前订单的信息,比如产品数量,产品大小等等

类似于我们自己实现BeanFactoryPostProcessor接口,实现当中的postProcessBeanFactory()方法,修改定制化BeanDefinition,或者做其他操作,从而满足我们的要求

此时我们需要整理好所有的订单,开始准备生产产品了

spring开始整合BeanDefinition,将各种BeanDefinition里面的Bean信息整合起来

然后工厂开始根据订单信息生产产品

spring开始拿整合后的BeanDefinition利用反射去初始化,实例化Bean对象

产品生产出来之后会放到仓库中,等待客户来拿

spring会将生产出来的Bean对象统一放在一个ConcurrentHashMap中,等需要使用某个Bean对象,直接去这个Map中获取

相关文章

  • 一个故事带你理解spring的核心

    说明 本文只是用一个形象的案例,带你快速去理解spring的核心,spring是一个很优秀的java框架,它的设计...

  • Spring核心之控制反转(IOC)

    Spring核心之控制反转(IOC) 如何理解IoC Spring Bean是什么 IoC Container管理...

  • spring 核心概念理解

    1. IOC(Inverse of Control):控制反转,也可以称为依赖倒置。 所谓依赖,从程序的角度看,就...

  • Spring框架基础知识

    参考博文链接:Spring框架的设计理念与设计模式Spring IOC设计原理解析 1.Spring 核心框架 S...

  • 7. AOP(一)

    spring源码学习笔记,要点归纳和代码理解 前言 Aop是Spring提供的的另一个核心功能,本节将探讨以下几个...

  • 十分钟带你理解Kubernetes核心概念[转]

    原文链接:十分钟带你理解Kubernetes核心概念 本文将会简单介绍Kubernetes的核心概念。因为这些定义...

  • Spring Boot自动化配置原理

    Spring Boot启动原理解析核心注解及入口 @SpringBootApplication分解 其中@Auto...

  • 收藏-微服务

    # 十分钟带你理解Kubernetes核心概念# 使用Istio治理微服务入门

  • Spring中的两大核心(Spring是一个IOC和AOP容器框架) IOC与aop IOC(spring的核心思...

  • 十分钟带你理解Kubernetes核心概念

    十分钟带你理解Kubernetes核心概念 本文将会简单介绍Kubernetes的核心概念。因为这些定义可以在Ku...

网友评论

      本文标题:一个故事带你理解spring的核心

      本文链接:https://www.haomeiwen.com/subject/jqacdrtx.html