• IOC随笔


    对IOC的一点学习笔记


    IOC (Inversion of Control):控制反转

    DI (Dependency Injection):依赖注入


    1、在没有使用IOC的情况下是如何进行的

    在UserController中需要用到UserService的相关逻辑来实现对应的增删改查功能,那么需要在UserController中直接 new UserService();
    对于一个UserService来说还好,假如我有若干个Service需要使用,每个地方都使用new来创造一个对象供自己使用?如果我每个Service都有若干种实现,那么分别进行new?这样太累了。

    2、IOC Service Provider登场

    我们需要使用一个对象,但是又不想自己动手去创造,那有没有别人来帮我们做这些基础工作?然后我们就集中精力关注我们要关注的业务点?
    有,来帮我们做这件事情的就是IOC Service Provider。
    我们需要什么的时候,完全交给它来帮我们创建,它知道我们需要什么。
    我们缺乏什么的时候,也可以主动找它要,它拥有我们想要的。
    我们将自己创建对象的控制权交给它,我们把自己的依赖来交给它管理,这就是----控制反转依赖注入。

    3、IOC Service Provider是什么

    IOC Service Provider是一个抽象概念,它指任何一种将IOC场景中的业务对象绑定到一起的实现方式,可以是一段代码,也可以是一组相关的类,或者是比较通用的IOC框架或者IOC容器实现。

    而我们使用的Spring,它的IOC容器就是:

    • BeanFactory:最基础的IOC服务支持,采用延迟初始化策略。
    • ApplicationContext:在BeanFactory的基础上构建,相对比较高级的容器实现,还有比如事件发布、国际化支持等。可以使用及时加载,容器在启动之后自动完成初始化绑定。

    4、IOC容器到底在背后做什么

    毫无疑问,它最基本的两个职责就是:

    • 业务对象的构建管理:负责创建系统中的一切需要的对象
    • 业务对象间的依赖绑定:将这些创建好的对象组织在一起让它们一起好好工作

    5、我们怎么使用IOC

    使用过 @Controller @Service @Resource @Autowired 这些注解吧?

  • 相关阅读:
    【42.38%】【BZOJ 3196】二逼平衡树
    【7.89%】【BNUOJ 52303】Floyd-Warshall
    【37.38%】【codeforces 722C】Destroying Array
    【57.14%】【codeforces 722B】Verse Pattern
    【26.34%】【codeforces 722A】Broken Clock
    HNOI2008越狱(快速幂)
    HNOI2010弹飞绵羊
    JSOI2008最大数(线段树)
    ZJ2008树的统计(树链剖分)
    SDOI 2010 and SXOI 2014 地精部落 (递推)
  • 原文地址:https://www.cnblogs.com/mrxiaobai-wen/p/14787009.html
Copyright © 2020-2023  润新知