首页 > 其他分享 >Spring 的 IoC(控制反转)

Spring 的 IoC(控制反转)

时间:2023-04-29 23:03:47浏览次数:43  
标签:控制 依赖 Java Spring 反转 IoC


IoC 是 Inversion of Control 的简写,译为“控制反转”,它不是一门技术,而是一种设计思想,也是一个概念,同时是一个重要的面向对象编程法则,能够指导我们如何设计出松耦合、更优良的程序。

在这里说 IoC 之前,你需要完全理解一个概念 DI(依赖注入)。

Spring 的 IoC(控制反转)_java

 

当你理解依赖注入以后,对控制反转就非常简单了,只是一个概念而已。 

什么是依赖注入,请参考文章:Java 依赖注入(DI)https://www.ossez.com/t/java-di/14383

控制反转

用土话来说就是本来应该是用你自己程序解决的依赖注入,我们现在把这个权力交给 Spring 来进行管理。

由 Spring 来管理所有的对象,因为你的权力下放给 Spring 了,Spring 就来进行控制了。

这个现象就叫做控制反转。

所以控制反转只是对一个现象的定义,Spring 是这个现象的具体实现罢了。

Spring 通过 IoC 容器来管理所有 Java 对象的实例化和初始化,控制对象与对象之间的依赖关系。我们将由 IoC 容器管理的 Java 对象称为 Spring Bean,它与使用关键字 new 创建的 Java 对象没有任何区别。

IoC 容器是 Spring 框架中最重要的核心组件之一,它贯穿了 Spring 从诞生到成长的整个过程。



标签:控制,依赖,Java,Spring,反转,IoC
From: https://blog.51cto.com/cwikius/6237172

相关文章

  • Spring Security 报:Encoded password does not look like BCrypt
    SpringBoot集成Security时,报EncodedpassworddoesnotlooklikeBCrypt原因:SecurityConfig必须Bean的形式实例化/***配置用户身份的configure()方法**@paramauth*@throwsException*/@Overrideprotectedvoidconfigure(AuthenticationManagerBuilderau......
  • SpringBoot读取.yml配置文件最常见的两种方式-源码及其在nacos的应用
    三、第二种方式(推荐)这种方式是小编比较推荐的,虽然看似比​​@Value​​麻烦不少,但是更加的规范,在配合nacos的时候也可以动态的修改,会立即生效,一会小编带大家试一下哈!!为什么推荐这种方式呢,是因为spring他们都是使用这种方式进行配置的,所以跟着官方走不会有错的!!1.修改yml文件我们......
  • SpringCloud学习笔记
    Eureka基本知识Eureka主要学习的是微服务的一些基本概念之类的,至于具体的操作其实都是在配置appolication.yml文件了,多看文档以及自己写过的demo就懂了。Eureka在微服务中承担的角色有三个,一个是注册中心server,一个是服务供给方porvider,以及接受用户请求的consumer,如果从启动类......
  • SpringMVC使用注解开发
    1.编写web.xml(模板代码)ViewCode2.导入springmvc的context和mvc两个依赖,通过context标签可以自动扫描识别包"com.lian.controller"下的所有注解,两个mvc标签是默认配置;context和mvc分别替代了之前的处理器映射器HandleMapper和处理器适配器HandlerAdapter;视图解析器拼接要要跳转......
  • springmvc 拦截器
    自定义一个拦截器LoginInterceptor这个拦截器的作用就是用户首次要去访问网站,直接点击首页会被拦截并跳转到登录页面,登录成功后(session有记录)方可直接来到首页不被拦截测试1:题目:用户在首次访问前提下,需设置拦截器,使得用户只要登录了才能到达用户主页思路:首先要优化一下首页inde......
  • Spring RCE漏洞
    SpringRCE漏洞目录SpringRCE漏洞一、漏洞概况与影响二、Spring动态参数绑定三、漏洞复现四、漏洞原理五、漏洞排查和修复一、漏洞概况与影响CVE编号:CVE-2022-22965受影响范围:SpringFramework5.3.X<5.3.18SpringFramework5.2.X<5.2.20JDK>=9使用Tomcat中间件且......
  • springboot 的三种启动方式
    1、常规操作,都是通过main方法启动了;2、部署到服务器上,一般都是通过java-jarxxxx.jar包的方式启动了;3、第三种是没有main方法的时候,本地想启动,可以通过maven的运行命令来启动,cmd定位到当前项目所在的目录,如果是微服务有很多个模块,定位到自己的模块位置,然后使用:mvnspring......
  • SpringBoot RabbitMQ死信队列
    1.死信定义无法被消费的消息,称为死信。如果死信一直留在队列中,会导致一直被消费,却从不消费成功,专门有一个存放死信的队列,称为死信队列(DDX,dead-letter-exchange)。死信队列DLX,DeadLetterExchange的缩写,又死信邮箱、死信交换机。其实DLX就是一个普通的交换机,和一般的交换机没有......
  • 【SpringBoot 学习】54、Spring Boot 集成 File Storage 实现各个平台文件对象处理
    文章目录SpringBoot集成FileStorageSpringBoot集成FileStorage统一依赖管理<!--spring-file-storage--><spring-file-storage.version>0.7.0</spring-file-storage.version><minio.versioin>8.4.3</minio.versioin>&l......
  • 【SpringBoot 学习】53、Spring Boot 集成 Spring Boot Admin
    文章目录SpringBoot集成SpringBootAdminSpringBootAdmin服务端SpringBootAdmin客户端SpringBoot集成SpringBootAdminSpringBootAdmin是服务端、客户端模式。如果把两个端搭建在同一个项目中也可以,但是客户端要是挂了,服务端也挂了,所以可以但没必要搭建独立的S......