ioc概念的理解(不是技术是一种设计思想)
    1. IOC (控制反转)
    2.     IoC(Inverse of Control)的字面意思是 控制反转 ,它包括两个内容:
    3.     其一是控制 (控制对象的实例化由使用者创建实例变成由容器创建)
    4.     其二是反转 (获取依赖对象的方式由使用者主动获取变成等待容器被动注入)
    5. 如果你觉得这个概念难以理解,你可以尝试一下理解另外一个对此概念的另外解读:
    6. DI( Dependency Injection 依赖注入)这个概念可以用来辅助理解IOC。
    7.     即让调用类对某一接口实现类的依赖关系由第三方(容器或协作类)注入,
    8.     以移除调用类对某一接口实现类的依赖。“依赖注入”这个名词显然比“控制反转”直接明了、易于理解。
 
 
ioc的注入的类型:
               构造函数注入 
                 属性注入 
                 接口注入
IOC容器的作用。(ioc容器是一种技术,实现ioc思想的一种方式)
      帮助我们完成实体类的实例化,装配,销毁等工作也就说我们常说的管理对象的生命周期。
      IOC容器可以让我们从底层实现类的实例化以及依赖关系的装配等工作中脱离出来。
      更专注于业务逻辑的开发。
 
ioc容器如何将对象纳入容器中进行管理??
               1.使用配置文件
                    IOC容器使用较多的配置文件应该是xml,使用xml文件描述创建实例,依赖关系是比较常用的手段。
                    不过,很多的框架也使用json数据格式去配置。
                    放到配置文件里的实体类都会被容器管理。   
               2.注解
                     通过特定注解将需要容器管理的实体类进行标记,然后统一扫描对这些类进行实例化,注入依赖。
IOC容器的核心实现原理??
         一.配置文件的方式
                1.使用xml约定配置项表示bean。
                2.读取xml文件获取创建bean需要的值(类名,属性名,属性值)
                3.使用Java反射技术创bean。
                4.将创建的对象放置到一个代表整个bean容器的map中。
          二.注解的方式
                1.在需要被容器管理的类上添加注解。
                2.使用jave反射扫描带有注解标记的类,取出创建bean实例
                3.将创建的对象放置到一个代表整个bean容器的map中。
         需要注意的是:所有被容器管理的bean的实例默认都是单例的!
什么时候使用注解什么时候使用配置文件呢?
          使用配置文件的场景:
             系统在运行的时候对象的状态可能会改变的,这个时候可以使用配置文件去管理这个bean。

像数据库连接池,redis等bean的配置,

我们在应用中如果使用第三方jar包中的bean的时候我们会采用配置的方式,(因为我们不大可能为第三方jar包添加上注解)

还有自身系统中的某些bean在不同的运行环境下有不同的实例,这个时候配置文件是首选。

          使用注解的场景:
                耦合关系基本不变的使用注解。
                     比如:像各个分层之间的service,web层的module与对应的service,这些bean的关系不会经常变更
                           所有使用注解还是甚好的。
ioc容器在整个架构(我公司的架构)中都做了哪些事情???
               分为两类使用配置文件,使用注解。
               1.配置文件
                    数据源(连接池),redis配置,常用sql对象配置,aop相关配置(事务,角色验证)
               2.注解 
                    所有分层(base,bussiness,web)中的所有service。
                    所有web层中的Module类
参考博客:

WEB核心IOC篇的更多相关文章

  1. 死磕Spring之IoC篇 - Spring 应用上下文 ApplicationContext

    该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读 Spring 版本:5.1. ...

  2. 我所理解的RESTful Web API [设计篇]

    <我所理解的RESTful Web API [Web标准篇]>Web服务已经成为了异质系统之间的互联与集成的主要手段,在过去一段不短的时间里,Web服务几乎清一水地采用SOAP来构建.构建 ...

  3. Laravel开发:Laravel核心——Ioc服务容器源码解析(服务器绑定)

    服务容器的绑定 bind 绑定 bind 绑定是服务容器最常用的绑定方式,在 上一篇文章中我们讨论过,bind 的绑定有三种: 绑定自身 绑定闭包 绑定接口 今天,我们这篇文章主要从源码上讲解 Ioc ...

  4. 死磕Spring之IoC篇 - BeanDefinition 的加载阶段(XML 文件)

    该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读 Spring 版本:5.1. ...

  5. 死磕Spring之IoC篇 - BeanDefinition 的解析过程(面向注解)

    该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读 Spring 版本:5.1. ...

  6. 死磕Spring之IoC篇 - 开启 Bean 的加载

    该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读 Spring 版本:5.1. ...

  7. 死磕Spring之IoC篇 - Bean 的创建过程

    该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读 Spring 版本:5.1. ...

  8. 死磕Spring之IoC篇 - @Autowired 等注解的实现原理

    该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读 Spring 版本:5.1. ...

  9. 死磕Spring之IoC篇 - @Bean 等注解的实现原理

    该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读 Spring 版本:5.1. ...

随机推荐

  1. 关于EF的 序列化类型为“XXX”的对象时检测到循环引用。

    在用Ef的时候,也许经常会遇到循环引用的错误. 下面提供解决办法.(不是Json.Net,如果是Json.Net可以给导航属性通过增加特性标签来解决该问题) ef大多数问题,可以通过ToList()来 ...

  2. Mysql高并发优化

    一.数据库结构的设计 1.数据行的长度不要超过8020字节,如果超过这个长度的话在物理页中这条数据会占用两行从而造成存储碎片,降低查询效率. 2.能够用数字类型的字段尽量选择数字类型而不用字符串类型的 ...

  3. WCF学习笔记1--发布使用配置文件的服务

    关于WCF的入门网上资料很多,可以参考蒋金楠老师的博客http://www.cnblogs.com/artech/archive/2007/02/26/656901.html,我是从这篇博客开始学习的 ...

  4. mysql学习笔记 第五天

    使用分区数据表: 分区数据表和merge数据表具有相似的作用,但是分区数据表确确实实是一个数据表 ,不像merge是列出数据表的逻辑关系,并且分区数据表可以包括像myisam以外的 的数据表.创建分区 ...

  5. Oracle数据库,模糊查询、去重查询

    分组去重查询,并执行某一个函数 :select  分组字段,聚合函数 from 表名 where 条件 group by分组字段 select 分组字段,聚合函数 from 表名 where 条件 g ...

  6. 基础-WeakReference

    一.概述 为了更好的理解WeakHashMap的原理,我们有必要先来了解一下WeakReference的作用及实现原理.Java中有一个专门的包java.lang.ref,里面定义了我们通常所说的几种 ...

  7. PHP 单例模式继承的实现方式

    /** * @author xiaojiang * 方式1 */ class father{ static $models = []; static public function getInstan ...

  8. HTTP协议(转)

    HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展.目前在WWW中使用的是HTTP/1.0的第 ...

  9. 基于软件开源实践(FLOSS)论共产主义的可实现性

    好久没发博客,来个狠的,我不信挨踢界有人比我更蛋疼来研究这个. 在马克思提出共产主义100多百年后,软件开发领域中出现了一种特别的生产方式:开源(FLOSS:Free/Libre and Open S ...

  10. 让你fork下来的项目与源项目保持同步

    原文在此, 建议阅读, 我把关键步骤抽出来了, 方便概览 (也就是add remote upstream, fetch upstream, rebase, 再push) Step 1: Forking ...