首页 > 其他分享 >spring的IOC

spring的IOC

时间:2024-03-20 17:12:16浏览次数:23  
标签:依赖 DI 对象 spring IOC 注入

IOC翻译成中文是"控制反转",不是具体技术,而是实现对象解耦的思想。

控制反转的意思是将依赖对象生命周期控制权进行反转,全称应该是控制权反转。

之前需要一个对象,常用的方法就是在当前对象中new一个对象,那这样有个比较大的问题在于,耦合,一旦new的那个对象构造方法变动,那么所有使用到的地方都需要改动。因此我们可以将需要的对方注入到spring的IOC容器中,需要使用的地方只需要注入该对象即可。常见的就是@service交给spring容器管理,在使用的模块利用@Resource/@Autowired注入进行使用。这样做的目的就是进行解耦,控制权的变动.以前需要对象,那需要使用模块造一个对象,而现在不需要,只要管IOC容器中拿对象即可,至于这个对象怎么生成的,使用模块并不关心。

IOC最大的特点就是:① 解耦和松散耦合;② 生命周期管理;

说到IOC的时候,我们常常会提到DI,这两者有什么区别呢?

DI翻译成中文是"依赖注入",依赖注入不是设计思想,而是具体的一种实现,它是IOC容器运行期间,动态的将某个依赖对象注入到当前对象的技术叫做DI。

比如A对象需要B对象,那么在A运行时,动态的将对象B注入到当前类中,而非通过直接new的方式或者B对象的方式,就是依赖注入

IOC和DI定义不同,但做的事情一样的,都是用来对象解耦的,两者区别在于:IOC是一种设计思想,DI是一种具体的实现技术。

比如:今天周五,想去吃顿好吃的,那么“吃顿好的”就是一种思想,为IOC。

那具体吃什么呢,盖浇饭、炒面、蒸菜?这种具体的就是DI。

因为是一种具体的实现,除了DI之外,还可以有别的方式,比如DS(依赖查找),在spring框架中,依赖查找通过ApplicationContext接口的getBean()方法来实现。

标签:依赖,DI,对象,spring,IOC,注入
From: https://www.cnblogs.com/qwg-/p/18085653

相关文章

  • 第一次实践spring cloud项目出的若干问题
    也许更好的阅读体验技术栈说明springcloud+eureka+feign+ribbon+hystrix+gateway+config+bus反序列化失败:Typedefinitionerror:[simpletype,classcom.elm.po.CommonResult];nestedexceptioniscom.fasterxml.jackson.databind.exc.InvalidDefinition......
  • Spring面试题
    目录Spring事务Spring的事务传播行为(级别)Spring的事务隔离Spring中的BeanFactory和ApplicationContext的区别Spring事务的本质其实就是数据库对事务的支持,没有数据库的事务支持,spring是无法提供事务功能的。真正的数据库层的事务提交和回滚是通过binlog或者redolog实......
  • springboot项目打包时提示“程序包xxx不存在,找不到符号”
    springboot多包工程,在使用maven进行打包的时候,一直提示“程序包xxx不存在,找不到符号”,但项目是可以正常启动运行的,开始一直以为是maven哪里没有配置好导致的,后来才发现原来是springboot的maven插件导致的。xxx-parent:顶级父工程xxx-a:子项目1xxx-b:子项目2xxx-c:子项目3依赖关系......
  • spring boot企业级开发教程学习笔记——第二章
    记录笔记。给亲友看的笔记,干劲十足(希望她看得懂,因为我不会教人)一.重要前提再次强调:springboot是为了优化spring的冗重的xml文件配置,spring的注解会更加丰富,但是springboot的思想还是跟着spring走。spring的重要思想是:说到容器,就必须要讲到一个东西Bean,按......
  • Spring中@NotNull注解@Valid注解简介及使用
    前言在开发中,为了代码的稳定性不报空指针异常,经常需要判断前端传过来的值是否为空,为空的话就返回前端值为空的提示,才能进行下一步的操作,例如登录操作需要判断传过来的登录名和密码是否为空:@GetMapping("login")publicResultlogin(Useruser){if(StringUti......
  • SpringBoot添加跨域处理
    配置类实现WebMvcConfigurer接口重写addCorsMappings(CorsRegistryregistry)方法用registry对象添加映射路径、是否发送cookie、设置放行哪些原始域、放行哪行请求方法、放行哪些请求头信息、暴漏哪些请求头部信息@ConfigurationpublicclassCorsConfigimplements......
  • spring 路由安全
    资料SpringMVC—@RequestMapping原理讲解-1-陶庭开-博客园(cnblogs.com)SpringBoot之@Controller和@RequestMapping的实现原理_51CTO博客_controllerrequestmappingSpringMVC源码解析——HandlerMapping(处理器映射器)_springmvchandlermapping-CSDN博客【精选】......
  • 基于Java的校园电商物流云平台(Vue.js+SpringBoot)
    目录一、摘要1.1项目介绍1.2项目录屏二、功能模块2.1数据中心模块2.2商品数据模块2.3快递公司模块2.4物流订单模块三、系统设计3.1用例设计3.2数据库设计3.2.1商品表3.2.2快递公司表3.2.3物流订单表四、系统展示五、核心代码5.1查询商品5.2查询快递公......
  • 基于Java的医院门诊预约挂号系统(Vue.js+SpringBoot)
    目录一、摘要1.1项目介绍1.2项目录屏二、功能模块2.1功能性需求2.1.1数据中心模块2.1.2科室医生档案模块2.1.3预约挂号模块2.1.4医院时政模块2.2可行性分析2.2.1可靠性2.2.2易用性2.2.3维护性三、数据库设计3.1用户表3.2科室档案表3.3医生档案表3.4......
  • 基于Java的考研专业课程管理系统(Vue.js+SpringBoot)
    目录一、摘要1.1项目介绍1.2项目录屏二、功能模块2.1数据中心模块2.2考研高校模块2.3高校教师管理模块2.4考研专业模块2.5考研政策模块三、系统设计3.1用例设计3.2数据库设计3.2.1考研高校表3.2.2高校教师表3.2.3考研专业表3.2.4考研政策表四、系统展......