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

       第二种:使用注解@IocBean
              

       第三种:使用xml
略.......
2. 如何那么多的方式如何进行选择呢?
      我们自己实际的生产环境的用法是:
一般的依赖关系都是固定的,在运行的时候基本不变的,我们采用的是注解,
将可能变动的关系写到配置文件里。
比如:我们将项目中各个分层之间的service采用的是注解,

                将数据库相关配置放到配置文件中,
                

3.ioc容器是如何确定哪些Bean是容器需要管理的:
   问几个问题:
a.它是怎么知道哪些文件中配置是需要被容器管理的bean,以及需要扫描哪些类上的@IocBean注解呢??
nutz提供了一个注解(@IocBy)专门用于在主模块类上指定扫描哪些文件以及注解。

              有上图可以知道:
json方式配置的bean的加载器去webconfig/下,以及Linux下的两个路径下扫描。
注解方式配置的bean加载器将扫描com.uxuexi开头包下的类。
b.它是如何去扫描除本项目之外的jar包(一般都是自己创建的,不会扫描第三方)呢?
可以在项目启动的时候,nutz的ioc容器加载完毕之前手动将要容器管理的bean扫描到容器中。
4. 何时开始创建这些被容器管理的bean?
           nutz在服务启动的时候将所有被@IocBean注解的类以及配置在json格式文件中的类信息加载到一个map中。
            

           就是上面圈住的那个map,其中key默认是这个类名。
而这个IocObject这个类主要就是记住这个类的信息:

          就是说在服务器启动的时候nutz只是扫描注解和文件将需要被容器管理的bean的信息集中存储到一个地方中,并没有真正的创建这些bean的实例。
5.容器什么时候会创建真正bean的实例??
           分两种种情况:
1.第一种当服务启动的时候就需要获取容器中的bean实例,可以手动获取容器。

              2.第二种是当我们的第一次http请求映射到的那个Module类,nutz会帮你去从ioc容器中取。
                     

6.都提供哪些Ioc的注入类型??
          构造函数注入:
                     

          属性注入:
                 

7.ioc容器在什么时候销毁???
       nutz通过将Filter的destroy方法在web容器停止运行的时候会将ioc容器销毁,
        

       NutzLoading类中的方法:
       

       就是将缓存中存放map清空。
 

基于nutz框架理解Ioc容器的更多相关文章

  1. Spring学习(一):理解IoC容器

    序言 记得刚毕业那会儿,出来招工作被问到Spring的核心时,都觉得简单的一笔,直接说不就是IoC(控制反转)和DI(依赖注入)么,然后省略一万字对两个名词的解释.最近空来整理了一下Spring中Io ...

  2. Spring框架 之IOC容器 和AOP详解

    主要分析点: 一.Spring开源框架的简介  二.Spring下IOC容器和DI(依赖注入Dependency injection) 三.Spring下面向切面编程(AOP)和事务管理配置  一.S ...

  3. Spring框架学习[IoC容器高级特性]

    1.通过前面4篇文章对Spring IoC容器的源码分析,我们已经基本上了解了Spring IoC容器对Bean定义资源的定位.读入和解析过程,同时也清楚了当用户通过getBean方法向IoC容器获取 ...

  4. Spring框架及IOC容器

    Spring是一个非常活跃的开源框架, 它是一个基于IOC和AOP来构架多层JavaEE系统的框架,它的主要目地是简化企业开发.Spring以一种非侵入式的方式来管理你的代码, Spring提倡”最少 ...

  5. 【Spring源码解析】—— 结合SpringMVC过程理解IOC容器初始化

    关于IOC容器的初始化,结合之前SpringMVC的demo,对其过程进行一个相对详细的梳理,主要分为几个部分: 一.IOC的初始化过程,结合代码和debug过程重点说明 1. 为什么要debug? ...

  6. 【.NET6+WPF】WPF使用prism框架+Unity IOC容器实现MVVM双向绑定和依赖注入

    前言:在C/S架构上,WPF无疑已经是"桌面一霸"了.在.NET生态环境中,很多小伙伴还在使用Winform开发C/S架构的桌面应用.但是WPF也有很多年的历史了,并且基于MVVM ...

  7. dreamvc框架(一)ioc容器的集成

    我的dreamvc框架最终写得差点儿相同了,借鉴了非常多开源框架,SpringMVC.Struts2等,眼下放在github上面.地址请猛戳我 写得差点儿相同了,是要写一个总结,把自己当时的思路记录下 ...

  8. ASP.NET Web API 框架研究 IoC容器 DependencyResolver

    一.概念 1.IoC(Inversion of Control),控制反转 即将依赖对象的创建和维护交给一个外部容器来负责,而不是应用本身.如,在类型A中需要使用类型B的实例,而B的实例的创建不是由A ...

  9. 脱离spring集成cxf(基于nutz框架)

    什么是webService WebService是一种跨编程语言和跨操作系统平台的远程调用技术. 理论资料: http://blog.csdn.net/wooshn/article/details/8 ...

随机推荐

  1. __weak 和 __block 区别

    Blocks理解: Blocks可以访问局部变量,但是不能修改 如果修改局部变量,需要加__block __block int multiplier = 7; int (^myBlock)(int) ...

  2. Java位运算总结-leetcode题目

    按位操作符只能用于整数基本数据类型中的单个bit中,操作符对应表格: Operator Description & 按位与(12345&1=1,可用于判断整数的奇偶性) | 按位或 ^ ...

  3. 【Java心得总结二】浅谈Java中的异常

    作为一个面向对象编程的程序员对于 下面的一句一定非常熟悉: try { // 代码块 } catch(Exception e) { // 异常处理 } finally { // 清理工作 } 就是面向 ...

  4. struts2学习笔记--OGNL表达式1

    struts2标签库主要使用的是OGNL语言,类似于El表达式,但是强大得多,它是一种操作对象属性的表达式语言,OGNL有自己的优点: 能够访问对象的方法,如list.size(); 能够访问静态属性 ...

  5. 我的Node.js处女作

    前言 很高兴我的node.js处女作开发完成了,目前还在优化完善阶段,经历两周的紧张沟通和开发,工作总算搞一段落.选用node.js 一是因为这次的业务逻辑相对来说简单想拿node练练手,二就是相对来 ...

  6. 【JVM】JVM系列之垃圾回收(二)

    一.为什么需要垃圾回收 如果不进行垃圾回收,内存迟早都会被消耗空,因为我们在不断的分配内存空间而不进行回收.除非内存无限大,我们可以任性的分配而不回收,但是事实并非如此.所以,垃圾回收是必须的. 二. ...

  7. activity结束之后刷新之前的activity的内容

    点击添加按钮之后-----弹出一个新的activity--------在新的activity将数据输入保存之后,关闭当前的activity回到之前的activity刷新内容 实现:使用onActivi ...

  8. js树形控件—zTree使用总结

    0 zTree简介 树形控件的使用是应用开发过程中必不可少的.zTree 是一个依靠 jQuery 实现的多功能 “树插件”.优异的性能.灵活的配置.多种功能的组合是 zTree 最大优点. 0.0 ...

  9. C#开发微信门户及应用(45)--微信扫码登录

    在前面随笔<C#开发微信门户及应用(41)--基于微信开放平台的扫码登录处理>介绍了基于微信开放平台接口实现的微信扫码直接登录的过程.本篇介绍对扫码登录的一些改进和处理,以便更方便应用在实 ...

  10. C#使用资源文件的方法

    其实,对于资源文件的使用,说白点就是通过强制类型转换,将资源文件里的数据强行的转换成你需要的(换种方式说,就是你原来存进去什么,就用什么类型拿出来). 主要通过System.Resources.Res ...