首页 > 其他分享 >设计模式(三十二)----综合应用-自定义Spring框架-自定义Spring IOC-自定义Spring IOC总结

设计模式(三十二)----综合应用-自定义Spring框架-自定义Spring IOC-自定义Spring IOC总结

时间:2023-04-05 20:36:02浏览次数:34  
标签:自定义 Spring 模式 spring 设计模式 IOC

1 自定义Spring IOC总结

1.1 使用到的设计模式

  • 工厂模式。这个使用工厂模式 + 配置文件的方式。

  • 单例模式。Spring IOC管理的bean对象都是单例的,此处的单例不是通过构造器进行单例的控制的,而是spring框架对每一个bean只创建了一个对象。

  • 模板方法模式。AbstractApplicationContext类中的finishBeanInitialization()方法调用了子类的getBean()方法,因为getBean()的实现和环境息息相关。

  • 迭代器模式。对于MutablePropertyValues类定义使用到了迭代器模式,因为此类存储并管理PropertyValue对象,也属于一个容器,所以给该容器提供一个遍历方式。

spring框架其实使用到了很多设计模式,如AOP使用到了代理模式,选择JDK代理或者CGLIB代理使用到了策略模式,还有适配器模式,装饰者模式,观察者模式等。

1.2 符合大部分设计原则

1.3 整个设计和Spring的设计还是有一定的出入

spring框架底层是很复杂的,进行了很深入的封装,并对外提供了很好的扩展性。而我们自定义SpringIOC有以下几个目的:

  • 了解Spring底层对对象的大体管理机制。

  • 了解设计模式在具体的开发中的使用。

  • 以后学习spring源码,通过该案例的实现,可以降低spring源码学习的入门成本。

 

标签:自定义,Spring,模式,spring,设计模式,IOC
From: https://www.cnblogs.com/xiaoyh/p/16563386.html

相关文章

  • Springboot整合Seata实现分布式事务
    前言Seata是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata将为用户提供了AT、TCC、SAGA和XA事务模式,为用户打造一站式的分布式解决方案。Seata配置非常灵活,支持多种注册中心、配置来源(配置中心)和持久化方式。本文选择eureka作注册中......
  • Springboot整合TX-LCN实现分布式事务
    前言TX-LCN是一款国产分布式事务协调框架,框架其本身并不操作事务,而是基于对事务的协调从而达到事务一致性的效果。本文讲解如何使用Springboot作为基础,来配置使用TX-LCN。需要MySQL和Redis。名词解释TM(Tx-Manager/TransactionManager)事务协调者TC(Tx-Client......
  • Springboot整合Apollo配置中心
    前言参考这一篇在Linux部署Apollo配置中心可以搭建出一套Apollo配置中心服务,我们在这里重点看看Springboot如何整合Apollo,将配置交给配置中心管理,并在修改后及时生效到服务上。我们模拟工作中的开发(development,DEV)和生产(production,PRO)两套环境,在下面例子中会实现不同环境下配......
  • Springboot+ElasticJob-Lite实现集群任务调度
    前言ElasticJob-Lite是集群环境下应用(比如SpringCloud微服务)任务调度的解决方案。集群部署的时候,一个定时任务会有多个进程执行,如果不进行任何处理,会导致任务触发的时候每个进程重复执行一次。解决办法有两种:一种是加锁,保证同时只有一个进程执行任务,比如用分布式锁,或者用任务调......
  • Springboot+Mysql 图书管理系统【源码+sql】
    java项目学生图书管理系统(源码+数据库文件)技术框架:java+springboot+mysql后端框架:SpringBoot、SpringMVC、MyBatisPlus前端界面:Thymeleaf、BootStrap、jQuery系统共分为三种用户系统主要功能:系统设计三个角色,学生端,管理员端,系统管理员端1.普通用户书籍查询、书籍借阅......
  • 基于SpringBoot+Vue+ElementUI的在线考试系统(可做毕设)
    项目简介青云是一套麻雀虽小但五脏俱全的在线考试系统。采用了目前主流的技术栈SpringBoot+Vue+ElementUI,并进行了前后端分离。对于事务和锁都有应用,非常适合学习练手。项目演示项目演示地址:http://xuezhabiji.com:5000账号:admin密码:admin代码获取:github:https://github.com......
  • SpringCloud Config
    为什么需要配置中心单体应用,配置写在配置文件中,没有什么大问题。如果要切换环境可以切换不同的profile(2种方式),但在微服务中。微服务比较多。成百上千,配置很多,需要集中管理。管理不同环境的配置。需要动态调整配置参数,更改配置不停服。配置中心介绍分布式配置中心包......
  • uni-app:tabbar自定义中间凸起按钮的tabbar(hbuilderx 3.7.3)
    一,官方文档地址:https://uniapp.dcloud.net.cn/collocation/pages.html#tabbarhttps://uniapp.dcloud.net.cn/api/ui/tabbar.html#ontabbarmidbuttontap二,代码1,pages.json"tabBar":{"color":"#7A7E83",//字体颜色"sel......
  • SpringMVC 结合 Servlet 不成功问题集锦
    问题集锦question1:Tomcat10版本太高causeTomcat10版本..主要就是说:Tomcat10之前的用户如果使用Tomcat10就需要将javax.*的导入转变为jakarta.*。这样才能将代码在Tomcat10中部署,还给你了一个迁移工具migrationtool来帮助你迁移代码。resolve换Tomcat9......
  • Spring 源码解析 - xml解析封装BeanDefinition(1)
    -  XML解析封装BeanDefinition  断点在 DefaultListableBeanFacy,registerBeanDefinition()二 如果给属性赋值 三 各种postprocessor       ##2、Spring套路点-1、AbstractBeanDefinition看看何时给容器中注入了什么组件-2、BeanFactory让......