首页 > 其他分享 >SpringIOC的理解

SpringIOC的理解

时间:2022-09-21 09:22:18浏览次数:65  
标签:容器 SpringIOC 组件 理解 ls LoginService LoginServlet 赋值

IOC(Inversion Of Control):控制反转
控制:即对资源(如一个Java类)的获取方式
获取方式可以分为两种

  1. 主动获取
    在Spring之前我们想要获取一个类都是自己创建,即new出这个类对象
    如在LoginServlet中需要使用LoginService
      LoginServlet{
      LoginService ls = new LoginService();//此时调用LoginService的无参构造创建对象
      //下边需要对ls这个对象赋值然后开始使用,如果是一个较简单的对象,那么赋值也比较容易,如果对象复杂,那么赋值也是复杂的,所以赋值这个过程也不怎么友好
    }
    
  2. 被动获取
    即资源不需要我们自己创建,而是交给一个容器来完成创建和设计的工作,我们只需要从容器中取出想要的资源就可以
      LoginServlet{
        LoginService ls;//取出想要的资源
        public void login(){
          ls.check;//直接开始使用
        }
    }
    

容器:可以管理所有的组件(有功能的类);假设LoginServlet和LoginService都受容器的管理,容器可以自动探查(通过配置文件或注解)出哪些组件中需要用到其他组件 ,容器可以直接帮我们创建LoginService对象,并给LoginService对象赋值。

DI(Dependency Injection):依赖注入
容器能知道哪些组件在运行时需要其他组件 ,容器通过反射的形式,将容器中准备好的LoginService对象注入(利用反射给属性赋值)到LoginServlet中

标签:容器,SpringIOC,组件,理解,ls,LoginService,LoginServlet,赋值
From: https://www.cnblogs.com/ccx-lly/p/16714389.html

相关文章

  • 一对多,多对一,多对多的理解
    对一是对象对多是集合一个班级下可以有多名学生  班级一对多名学生一个学生只能有一个班级,一个学生不能有多个班级,所以这里是一对多  班级一对多名学生而多对......
  • 对软件工程的理解
    作为一名来自安泰经济与管理学院的学生,我认为软件工程运用了许多管理学的基本方法和模型,例如PDCA流程,瀑布模型等来对软件开发的整个流程进行规范化的管理来让软件的开发、......
  • go语言中使用接口,以及对接口的理解
    go语言中使用接口,以及对接口的理解接口的简单介绍在任一编程语言中,接口-方法或行为的集合,在功能和该功能的使用者之间构建了一层薄薄的抽象层。在使用接口时,并不需要了......
  • 对软件工程的理解
    在上这门课之前,我把对软件工程的理解重点放在软件上,认为这门课主要学习在软件里边用什么样的语言、写什么样的代码,还在考虑基础薄弱的自己如何独自完成软件这样庞大的任务......
  • 十分钟理解布隆过滤器
    首先我们要先了解什么是布隆过滤器?布隆过滤器(BloomFilter)是由Bloom于1970年提出的。我们可以把它看作由二进制向量(或者说位数组)和一系列随机映射函数(哈希函数)两部分......
  • 【时间复杂度和空间复杂度】简单理解与学习
    前言学习算法之前,我们需要先搞懂时间复杂度和空间复杂度。顾名思义,时间复杂度和空间复杂度是一个判断算法好坏的一个标准。时间复杂度就相当于运行代码花费的时间,空间复杂......
  • [通明境 · React架构]通俗地讲React,优雅地理解React
    1前言大家好,我是心锁,一枚23届准毕业生。如果读者阅读过我其他几篇React相关的文章,就知道这次我是来填坑的了原因是,写了两篇解读react-hook的文章后我发现——并不是每......
  • docker理解
    Docker包括三个基本概念:镜像(Image):Docker镜像(Image),就相当于是一个root文件系统。比如官方镜像ubuntu:16.04就包含了完整的一套Ubuntu16.04最小系统的root文件......
  • C++中指针理解
    参考https://www.runoob.com/cplusplus/cpp-pointers.html正文指针的使用就像java中对象的赋值使用一样,如java中:classUser{ publicintage; User(intage){......
  • DeepHyperX代码理解-HamidaEtAl
    代码复现自论文《3-DDeepLearningApproachforRemoteSensingImageClassification》 先对部分基础知识做一些整理:一、局部连接与参数共享(都减少了参数计算量)......