首页 > 其他分享 >Spring 中控制反转 和 依赖注入 的区别和关系

Spring 中控制反转 和 依赖注入 的区别和关系

时间:2023-12-30 10:34:41浏览次数:34  
标签:xml 依赖 对象 Spring bean 反转


控制反转 (IOC),面向对象的一种设计原则,目的是降低耦合度。依赖注入(DI)是实现控制反转的常见方式,控制反转的另外一种实现方式是 依赖查找。控制反转中的控制指的是自己控制(创建)自己的成员变量,反转指的是由通过自己去控制(创建)成员变量变成由第三方来传递给自身,也就是第三方将自己的依赖(所需的成员变量)注入到自身。

1. 控制反转

先描述一个场景:一个对象A要引用另外一个对象B, 那么需要在 A 中使用 new 关键字创建一个 B 对象,例如 在services层中调用你需要使用对应的 dao,你需要先创建该dao,这就增加了耦合度。

你可能会使用 工厂模式 去创建 dao,去减低耦合,Spring IOC 中使用的就是一个 基于 xml 的 超级工厂,可以在 xml 中集中的注册 bean,你要声明要注册bean的类全限定名和你想要给这个赋值的数据,Spring通过反射机制创建这个对象。

当然想要注册 bean和使用注册的bean需要先加载 xml 文件,然后可以使用 bean 工厂获得注册的 bean,Bean 工厂会自动将 对象A 所需 的对象 B 给赋值过去(也可以称作把对象A的依赖进行了注入)。

2. 依赖注入

依赖注入:依赖注入会将所依赖的关系自动交给目标对象,而不是让对象自己获取依赖。

实现依赖注入的两种方式:xml 和 注解,注解是为了减少 xml 中的配置。

Spring 使用 xml 装配 bean 的例子。

Spring使用注解(Annotation)进行bean的装配总结+实例。


标签:xml,依赖,对象,Spring,bean,反转
From: https://blog.51cto.com/xuxiangyang/9038504

相关文章

  • IDEA 中 SpringBoot2 整合 Mybatis 实例实例
    记录在IDEA中 使用SpringBoot2整合Mybatis的实例,环境:Java8+Maven+MySQL8。1. 添加依赖 添加MyBatis依赖,MySQL连接依赖,,数据库用的MySQL8。<!--MyBatis依赖--><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-s......
  • Spring Boot学习随笔- 集成MyBatis-Plus,第一个MP程序(环境搭建、@TableName、@TableId
    学习视频:【编程不良人】Mybatis-Plus整合SpringBoot实战教程,提高的你开发效率,后端人员必备!引言MyBatis-Plus是一个基于MyBatis的增强工具,旨在简化开发,提高效率。它扩展了MyBatis的功能,提供了许多实用的特性,包括强大的CRUD操作、条件构造器、分页插件、代码生成器等。MyBati......
  • 代码随想录day03 链表删除 链表类的实现 反转链表
    首先是链表的删除操作热身题这里使用了一个新的头指针这样在删除头指针的时候就不需要进行额外的判断然后是链表类的实现需要一点背诵加上深刻理解有时候理解了但是写起来还是会有些指针边界的小问题应该多写写多记一下就会好了还有就是手写链表要常复习吧学习新......
  • spring(自动加载xml装载容器)
    1.实现将DefaultListableBeanFactory类注入到当前AbstractBeanDefinitionReader中2.取出xml内容,并生成beanfinition实例对象,注入到DefaultListableBeanFactory类中的map中。packageorg.springframework.beans.factory.xml;importcn.hutool.core.util.StrUtil;importorg.do......
  • Java+SpringBoot+Maven+TestNG+httpclient+Allure+Jenkins实现接口自动化
    一、方案需求目标:测试左移,测试介入研发过程,验证单接口正常及异常逻辑选用工具:Java、SpringBoot、Maven、TestNG、httpclient、Allure、Jenkins方案:创建测试接口测试工程,参照研发设计文档和设计思路,编写正常及异常用例,直接调用服务端接口,覆盖接口逻辑和验证异常处理,提升接口健壮......
  • 网络安全——SpringBoot配置文件明文加密
    信铁寒胜:这边文章真的说得挺好的。XTHS:第一步、XTHS:第二步、XTHS:第三步、XTHS:第四步!就可以实现了。(但是前提,你要先对你的文本进行加密,然后按照ENC(加密文本),放到配置文件中) 一、前言在日常开发中,项目中会有很多配置文件。比如SpringBoot项目核心的数据库配置、Redis账号密码......
  • Springboot集成Nacos
    1.添加依赖com.alibaba.cloudspring-cloud-starter-alibaba-nacos-discovery2.2.9.RELEASEcom.alibaba.cloudspring-cloud-starter-alibaba-nacos-config2.2.9.RELEASE2.注册中心1、把Nacos的Ip和端口配置配置文件中2、在启动类上加上@EnableDiscoveryClient注解3、同一类的服务可......
  • `pip freeze` 是一个命令,它会列出所有已安装的Python库及其版本号。这个命令在Python
    pipfreeze是一个命令,它会列出所有已安装的Python库及其版本号。这个命令在Python的包管理器pip中使用,主要用于生成一个项目的依赖列表。这个列表可以用于在其他环境中重新创建相同的库设置,通常通过使用pipinstall-rrequirements.txt命令,其中requirements.txt是由pipfree......
  • Springboot集成Nacos
    1.添加依赖com.alibaba.cloudspring-cloud-starter-alibaba-nacos-discovery2.2.9.RELEASEcom.alibaba.cloudspring-cloud-starter-alibaba-nacos-config2.2.9.RELEASE2.注册中心1、把Nacos的Ip和端口配置配置文件中2、在启动类上加上@EnableDiscoveryClient注解3、同一类的服务可......
  • 在SpringBoot中自定义指标并使用Prometheus监控报警
    公众号「架构成长指南」,专注于生产实践、云原生、分布式系统、大数据技术分享在10分钟教你使用Prometheus监控SpringBoot工程中介绍了如何使用Prometheus监控SpringBoot提供的默认指标,这篇介绍如何自定义业务指标,并使用Prometheus进行监控并报警,同时在Grafana进行展现示例......