思路:

ioc框架的核心就是管理bean的生命周期,bean的生命周期包括:创建,使用,销毁。
创建

容器在创建一个bean的实例之前必须要解决以下问题:
第一个问题: 创建bean的信息如何提供给你容器?
容器通过xml文件或者json格式预定义一些元素指定创建一个类需要的信息,
如:包点类名,属性名以及对应的属性值,以及该实例是否为单例等等。
然后根据这些信息通过java反射技术就可以创建这个类实例。
也可以用过特定的注解,扫描特定注解获取到特定注解所在的类信息就可以利用
java反射技术创建这个类的实例。
第二个问题:哪些bean需要容器去创建? 这些bean必须的条件??
容器默认凡是配置在xml或者添加特定注解的(@IocBean)中的类都是需要容器管理的bean。
这些Bean必须提供一个无参的构造,必须公共的。
第三个问题:何时开始创建这些被容器管理的bean?
容器默认是在项目启动的时候读取配置文件或者扫描注解进行初始化这些bean。
也有可以指定在获取这个bean的时候再进行初始化。
第四个问题:容器是如何存放这些bean的??
这么多的bean肯定要有一个key与之对应,使用map存放是挺好的方式。
第五个问题:都可以为框架使用者提供哪些方式的注入??
一个比较灵活的ioc容器应该为Bean提供更多中方式进行注入。
比如:构造函数注入,属性注入
第六个问题:注入的值都可以支持哪些类型??
布尔,数字,内部对象,引用,等
使用

容器要做的事情就是在使用一个bean之前帮你实例化好这对象,容器可以选择在项目启动的时候进行初始化好这个bean,也可以
在web容器启动的时候依据自己的注解和配置文件将这些要实例化bean的信息暂时保存起来,等到你真正使用的时候再去初始化。
获取bean对象实例的方式:
1.通过容器自动帮你注入。
2.通过自己手动获取容器中bean对象。
销毁

ico容器创建的这么多的bean什么时候销毁呢?
当容器关闭的时候里面的所有bean都会被销毁。

我们选择使用注解和xml的时候需要明白一点,使用注解在运行时关系是固定的不可更改,但是使用xml配置文件却可以

针对某一个接口的服务改变实现类。

揣摩实现一个ioc容器需要做的事情的更多相关文章

  1. 从0开始搭建一个IoC容器(C#版)

    网址:https://blog.csdn.net/wangyahua1234/article/details/100619695 目录 1. IoC简介 2. Tiny版IoC的功能 3. Tiny版 ...

  2. 手写一个IOC容器

    链接:https://pan.baidu.com/s/1MhKJYamBY1ejjjhz3BKoWQ 提取码:e8on 明白什么是IOC容器: IOC(Inversion of Control,控制反 ...

  3. 手撸一个IOC容器

    IoC 什么是IoC? IoC是Inversion of Control(控制反转)的简称,注意它是一个技术思想.描述的是对象创建.管理的事情. 传统开发方式:比如类A依赖类B,往往会在类A里面new ...

  4. TypeC一个微软开发的超简单.NET依赖注入/IoC容器

    控制反转(IoC,Inversion of Control)是由Martin Fowler总结出来的一种设计模式,用来减少代码间的耦合.一般而言,控制反转分为依赖注入(Dependency Injec ...

  5. 自定义模拟一个Spring IOC容器

    一.模拟一个IOC容器: 介绍:现在,我们准备使用一个java project来模拟一个spring的IOC容器创建对象的方法,也就是不使用spring的jar自动帮助我们创建对象,而是通过自己手动书 ...

  6. 曹工说Tomcat4:利用 Digester 手撸一个轻量的 Spring IOC容器

    一.前言 一共8个类,撸一个IOC容器.当然,我们是很轻量级的,但能够满足基本需求.想想典型的 Spring 项目,是不是就是各种Service/DAO/Controller,大家互相注入,就组装成了 ...

  7. 通过中看不中用的代码分析Ioc容器,依赖注入....

    /** * 通过生产拥有超能力的超人实例 来理解IOC容器 */ //超能力模组接口 interface SuperModuleInterface{ public function activate( ...

  8. 基于nutz框架理解Ioc容器

    同样我们从问题入手去验证以及去理解Ioc容器都做了哪些事情: 1.nutz是有几种方式获取需要容器管理bean的信息? 第一种是使用json格式的文件进行配置,如: 第二种:使用注解@IocBean ...

  9. IoC 之 2.2 IoC 容器基本原理(贰)

    2.2.1  IoC容器的概念 IoC容器就是具有依赖注入功能的容器,IoC容器负责实例化.定位.配置应用程序中的对象及建立这些对象间的依赖.应用程序无需直接在代码中new相关的对象,应用程序由IoC ...

随机推荐

  1. "Hello World!" for the NetBeans IDE

    "Hello World!" for the NetBeans IDE It's time to write your first application! These detai ...

  2. luogg_java学习_03_流程控制及循环结构

    本文为博主辛苦总结,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用. 转载请注明 出自 : luogg的博客园 谢谢配合! 程序流程控制 顺序结构 分支结构:if-else,sw ...

  3. NYOJ 737---石子归并(GarsiaWachs算法)

    原题链接 描述    有N堆石子排成一排,每堆石子有一定的数量.现要将N堆石子并成为一堆.合并的过程只能每次将相邻的两堆石子堆成一堆,每次合并花费的代价为这两堆石子的和,经过N-1次合并后成为一堆.求 ...

  4. No.016:3Sum Closest

    问题: Given an array S of n integers, find three integers in S such that the sum is closest to a given ...

  5. Fiddler (五) Mac下使用Fiddler

      Fiddler是用C#开发的.  所以Fiddler不能在Mac系统中运行.  没办法直接用Fiddler来截获MAC系统中的HTTP/HTTPS,    Mac 用户怎么办呢? Fiddler可 ...

  6. socket.io,远程控制你的幻灯片

    原文:http://www.cnblogs.com/xiezhengcai/p/3964455.html 中秋休息了几天,今天又开始捣鼓socket.io了.今天的任务是通过socket.io控制你的 ...

  7. GJM :FPSCalc-简单FPS观测类 [转载]

    版权声明:本文原创发表于 [请点击连接前往] ,未经作者同意必须保留此段声明!如有侵权请联系我删帖处理! FPSCalc--简单FPS观测类 利用Unity做的手游项目很多时候要保证流畅度,流畅度最直 ...

  8. Midnight.js – 实现奇妙的固定头部切换效果

    Midnight.js 是一款 jQuery 插件,在页面滚动的时候实现多个头设计之间的切换,所以你总是有一个头与它下面的内容层叠,看起来效果很不错. Midnight.js 可以让你轻松实现这种切换 ...

  9. 类似 Google Tips 页面的卡片式提示和翻转特效

    这款 jQuery 插件用于实现类似 Google Tips 页面的卡片式提示和翻转的交互特效.你可以根据自己的需要定制动画效果参数,定义回调函数来控制行为.因为使用了 CSS3,所以只支持 Chro ...

  10. 【前端盲点】DOM事件流论证CSS盒模型是否具有厚度

    前言 很久没有扯淡了,我们今天来扯淡吧. 我今天思考了一个问题,我们页面的dom树到底是如何渲染的,而CSS盒模型与javascript是否有联系,于是便想到一个问题: CSS的盒模型具有厚度么??? ...