从一个面试题开始:

你自己实现IOC容器的话,保存bean你会使用什么数据结构来保存呢?

现在的很多开发人员(甚至3年以上的)不一定能回答这问题,为什么会这样呢?

这个跟现在springboot现在已经高度成熟了,很多配置文件都已经没有了,改用了注解方式,这样一来,很多研发人员很难从原理上深入理解这个问题。所以这个系列课程我,没有从springboot开始,而是选择springmvc。

先从目前实际用springmvc开发时采用注解的方式开始,这个也是springmvc开发的主要方式。

然后采用xml方式的springmvc【现在用的比较少了,除非是以前遗留的系统】,实现同样功能的时候,需要配置哪些xml配置文件。进而切换到我们如何自己实现springioc容器的主题上来。

如果想弄明白ioc容器的原理,我们可以从如何存储bean来开始。然后通过分析springioc原理的讲解,加上自己实现的简单IOC容器的方式,加深大家对于ioc容器的理解。

SpringMvc demo解析(基于注解):

目前主流的springmvc开发方式,基于注解,自动配置依赖,只需要写业务代码

SpringMvc demo解析(基于XML):

这种形式,你是需要配置请求对应哪个Controller ID,这个controller id对应了哪个类,这个类有哪些属性,都是需要通过xml告诉spring ioc容器的。

SpringIOC原理

控制反转与依赖注入。

类的属性分为:基本属性、其他类。

在IOC容器出来之前,我们需要使用一个bean的时候,需要先new一个这种类的bean出来,然后设置这个bean的属性,设置完之后,才能使用。【查看示例代码】

有了Sporingioc之后,springioc可以依据xml配置文件或者注解的方式来自动的装配这些类。我们在使用的时候,只需要从ioc容器里面根据bean的 ID 或者 name把bean取出来就可以直接使用。【查看示例代码】

也就是说,bean的这个装配或者实例化的过程由ioc容器帮我们实现了,控制权由我们自己控制变成了有IOC容器来控制。 所以IOC容器其实是一种控制反转的思想。

自己实现简单的SpringIOC

java自己实现ioc_springioc原理、springmvc项目分析、自己实现IOC相关推荐

  1. 京东购物车的 Java 架构实现及原理

    转载自 京东购物车的 Java 架构实现及原理 今天来写一下关于购物车的东西, 这里首先抛出四个问题: 1)用户没登陆用户名和密码,添加商品, 关闭浏览器再打开后 不登录用户名和密码 问:购物车商品还 ...

  2. spring原理 struts2原理 hibernate原理 MyBatis原理 SpringMVC

    Spring原理 最核心的就是IOC,动态注入DI,利用java里的反射,让一个对象的创建不用new了,可以自动的生产.Spring就是在运行时,跟xml Spring的配置文件来动态的创建对象,和调 ...

  3. 深入掌握Java技术 EJB调用原理分析

      深入掌握Java技术 EJB调用原理分析     一个远程对象至少要包括4个class文件:远程对象:远程对象的接口:实现远程接口的对象的stub:对象的skeleton这4个class文件. 在 ...

  4. java.lang.ThreadLocal实现原理和源码分析

    java.lang.ThreadLocal实现原理和源码分析 1.ThreadLocal的原理:为每一个线程维护变量的副本.某个线程修改的只是自己的副本. 2.ThreadLocal是如何做到把变量变 ...

  5. java gc的工作原理、如何优化GC的性能、如何和GC进行有效的交互

    java gc的工作原理.如何优化GC的性能.如何和GC进行有效的交互 一个优秀的Java 程序员必须了解GC 的工作原理.如何优化GC的性能.如何和GC进行有效的交互,因为有一些应用程序对性能要求较 ...

  6. Java程序的运行原理及JVM的启动是多线程的吗?

    Java程序的运行原理及JVM的启动是多线程的吗? A:Java程序的运行原理 Java通过java命令会启动java虚拟机.启动JVM,等于启动了一个应用程序,也就是启动了一个进程. 该进程会自动启 ...

  7. 【Java 虚拟机原理】JDK 体系结构 | Java 源码运行原理 | Java 虚拟机内存

    文章目录 一.JDK 体系结构 二.Java 源码运行原理 三.Java 虚拟机内存结构 一.JDK 体系结构 JDK 体系结构 : 下图所有的内容都是 JDK 体系中的组成元素 ; Java Lan ...

  8. java高级----Java动态代理的原理

    Java动态代理机制的出现,使得 Java 开发人员不用手工编写代理类,只要简单地指定一组接口及委托类对象,便能动态地获得代理类.代理类会负责将所有的方法调用分派到委托对象上反射执行,在分派执行的过程 ...

  9. Java集合 LinkedList的原理及使用

    1.LinkedList的概述 2.LinkedList的常用方法 3.LinkedList的三种便利方式 4.LinkedList的总结 1.LinkedList的概述 LinkedList和Arr ...

最新文章

  1. java提高篇(三十)-----Iterator
  2. java解压obb_Bundle包转apk(.obb格式转.apk)
  3. 关于集体生活和个人生活的思考
  4. 二叉树常用方法(一)
  5. [Pyhon疫情大数据分析] 一.腾讯实时数据爬取、Matplotlib和Seaborn可视化分析全国各地区、某省各城市、新增趋势
  6. 两条线段的夹角 cesium_《原本》命题1.10 一条线段可以被分成两条相等的线段
  7. 信息学奥赛一本通 2052:【例3.2】范围判断
  8. spring12----基于@AspectJ的AOP
  9. Bootstrap 中 表单和图片(二)
  10. [推荐]WebService开发知识介绍
  11. 从Word2Vec到Bert,聊聊词向量的前世今生(一)
  12. Windows平台下编译FFmpeg
  13. Modern Python Cookbook》(Python经典实例)笔记 2.3 编写长行代码
  14. MMF与WAV格式的铃声制作全过程
  15. 直击AWE2018:当AI遇见LED,诸葛小明给光更多可能
  16. Palabos用户手册翻译及学习(四)非本地操作的数据处理器和块之间的耦合
  17. 服务器信号有杂音怎么回事,麦克风有杂音或电流声等的解决方法
  18. 中药治疗糖尿病十六则常用方-中药治疗糖尿病
  19. excel智能提取_Excel智能艺术家谱
  20. python 蓝桥杯--数的读法

热门文章

  1. java fx 内置图标_图标 – 如何在Windows上为javafx本机程序包图标设置自定义图标...
  2. 思维脑图——数据分析实战(最新版)
  3. Web安全-伪静态网页
  4. 2017-12-04HTML table布局
  5. js如何把ajax获取的值返回到上层函数里?
  6. 上下div高度动态自适应--另类处理方案
  7. 阅读react-redux源码(二) - createConnect、match函数的实现
  8. Easy.Ajax 部分源代码, 支持文件上传功能, 兼容所有主流浏览器
  9. 监听微信、支付宝等移动app及浏览器的返回、后退、上一页按钮的事件方法
  10. 排序算法之(7)——堆排序