什么是IOC-程序员宅基地

技术标签: spring  java  开发语言  

1.什么是ioc

IOC是Inversion of Control的缩写,多数书籍翻译成“控制反转”。

  1996年,Michael Mattson在一篇有关探讨面向对象框架的文章中,首先提出了IOC 这个概念。对于面向对象设计及编程的基本思想

,简单来说就是把复杂系统分解成相互合作的对象,这些对象类通过封装以后,内部实现对外部是透明的,从而降低了解决问题的复杂度,而且可以灵活地被重用和扩展。

   IoC的全称是Inversion of Control,翻译过来就是控制反转的意思。以前我们的编码习惯是需要什么对象的时候直接new一个出来就好了,然而有个人突然出来跟我们说以后不需要我们主动去new对象了,我们需要什么对象跟它说它就会为我们准备好,这我们当然是乐意的,这个人就是IoC。控制反转的意思就是我们将对象的创建和管理权交给IoC Service Provider(IoC思想的具体实现)。

 IOC (Inversion Of Control,控制倒转),是spring的核心,贯穿始终,所谓IOC ,对于spring框架来说,就是由spring来负责控制对象的生命周期和对象间的关系。所有的类都会在spring容器中登记,告诉spring你是个什么,你需要什么,然后spring会在系统运行到适当的时候,把你要的东西主动给你,同时也把你交给其他需要你的东西。所有的类的创建、销毁都由 spring来控制,也就是说控制对象生存周期的不再是引用它的对象,而是spring。对于某个具体的对象而言,以前是它控制其他对象,现在是所有对象都被spring控制,所以这叫控制反转。

IOC容器概念

   1)控制反转,把对象创建和对象之间的调用过程,交给Spring进行管理。

   2)使用IOC目的:为了耦合度降低

  1. 控制反转:把对象的创建和对象之间的调用过程,从程序员手里转交给Spring进行管理。
  2. 使用IOC的目的:为了降低耦合度

2. IOC的底层原理

xml的解析

工厂

模式反射

IOC(接口)  1)IOC思想基于IOC容器完成,IOC容器底层就是对象工厂

 Spring提供IOC容器实现方式:(两个接口)

        a.BeanFactory:IOC容器基本实现,是Spring内部的使用接口,不提供开发人员进行使用。

            ** 加载配置获取文件时候不会创建对象,在获取对象(使用)才去创建对象。

        b.ApplocationContext:BeanFactory接口的子接口,提供更多更强大的功能,一般由开发人员进行使用。

            ** 加载配置文件时候就会把在配置文件中的对象进行创建。

   3)ApplicationContext接口有实现类

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/jlcheerful/article/details/128538212

智能推荐

新增同步管理、操作日志模块,支持公共链接分享,DataEase开源数据可视化分析平台v2.3.0发布_管理后台操作日志模块-程序员宅基地

文章浏览阅读1.5k次,点赞21次,收藏23次。数据源新增支持DB2数据源,图表新增支持透视表、指标卡。_管理后台操作日志模块

强化学习 - Monte Carlo Tree Search (MCTS)_强化学习 monte-carlo tree search-程序员宅基地

文章浏览阅读632次,点赞12次,收藏8次。强化学习中的Monte Carlo Tree Search (MCTS) 是一种用于决策制定和搜索的算法,特别在不确定环境下表现出色。_强化学习 monte-carlo tree search

jira任务导出excel-程序员宅基地

文章浏览阅读4.9k次。问题>我未完成的问题,搜索符合条件的任务更多:可以增加筛选条件;高级:可以自定义搜索条件(自己编写),一般不用;搜索条件:项目,类型(故事,故障,子任务等),状态(待办,处理中,IMPLEMENTING,TESTING,完成,已关闭等),经办人,解决结果(未解决,完成等),sprint,列表可以增加列:关键字(任务号),状态,问题类型,经办人,概要,等导出:CSV(当前域)>分隔符(,)csv调整为excel格式:新建一个excel>数据>导入数据>选择数

NRF24L01的最简配置_gnu radio录制的nrf24l01信号怎么调制-程序员宅基地

文章浏览阅读3.3k次,点赞2次,收藏4次。NRF24L01很多时候,我们不需要多么高级的设置,甚至只需要最简单的通讯即可,下面在刚上电(即插上电源)情况下的配置: 发送端: (1)hal_nrf_write_reg(0,0x0a); //该寄存器默认为0x08,直接上电即可,默认为发送模式 (2)hal_nrf_write_tx_payload(ch, 6); //ch为一字符串指针,这里必须为6字节,以对应接收数据宽度为6的设置_gnu radio录制的nrf24l01信号怎么调制

Mybatis-generator自动生成代码时提取自定义注释_mybatis-generator 导出comment-程序员宅基地

文章浏览阅读532次。在上篇文章中https://blog.csdn.net/yanyf2016/article/details/102972195生成的实体类没有数据库自己定义的注释,根据网上找到的资料以及阅读Mybatis-generator源码,发现可以通过自定义注释生成器 CommentGenerator 接口的实现类来达到我们的目的。通过阅读源码可以看到,代码生成注释是通过DefaultComm..._mybatis-generator 导出comment

yaml-cpp安装_libyaml-cpp.so.0.5-程序员宅基地

文章浏览阅读9.3k次。yaml是一种适合人类阅读的标记语言,主要用来标记hierarchy结构的数据。我所了解的C++阅读yaml的工具有OpenCV和yaml-cpp。这里以我的经验为例简单介绍yaml-cpp安装过程。_libyaml-cpp.so.0.5

随便推点

linux备份文件命令tar.gz,Linux系统tar命令备份数据-程序员宅基地

文章浏览阅读367次。作为Linux系统管理员,最经常使用的备份工具就是tar和cpio命令。前面在介绍备份介质时,已经使用了tar命令,此命令其实是一个文件打包命令,经常在备份文件的场合中使用。使用cpio命令进行数据备份,请阅读《Linux提取RPM包文件(cpio命令)》。有关tar命令的基本用法,请阅读《Linux tar压缩命令》一节,这里不再过多赘述。下面通过tar命令做的一个Web服务器的备份脚本,详细了..._tar czf old/${sysdate:0:8}_${sysdate:9:2}_${server}.tar.gz work/*

s7-1200跟mysql_西门子s7200smart和s7-1200的区别是什么,谁更有前景?-程序员宅基地

文章浏览阅读905次。展开全部1、S7-1200介于200和300之间。636f707962616964757a686964616f31333365633932性能比200强大很多。 西门子当初做200,是找日本外购的硬件,他一直想做自己的硬件即后来的1200。2、Smart 是为了满足中国市场的一些顽固人士准备的,或者是为了一些简单的很小的设备,为了降低成本准备。Smart是在200的基础上进行了升级,从名字就看的出..._s7-1200代替了西门子什么产品

一、前端请求后台方式-程序员宅基地

文章浏览阅读1.6k次。一、前端请求后台方式方法一:直接使用<%=%>调用前台JS:<script type = "text/javascript" > var methodStr = "<%=BehindMethod() %>";   alert(methodStr); </script>后台方法:public stati..._请通过前端地址访问后台

机器学习核心算法原理及应用-程序员宅基地

文章浏览阅读17次。机器学习核心算法原理及应用作者:禅与计算机程序设计艺术1. 背景介绍机器学习是当今计算机科学领域最为活跃和快速发展的分支之一。从简单的线性回归到复杂的深度学习神经网络,机器学习算法已经广泛应用于各个行业,推动了人工智能技术的快速进步。本文将深入探讨机器学习的核心算法原理,并结

Axure RP 9弹窗创建与实现【教程四】_axrue rp9 制作菜单弹出框-程序员宅基地

文章浏览阅读5.7k次,点赞2次,收藏9次。一、弹窗介绍弹窗就是在页面点击某个地方时,会在当前页面上出现一个窗口,我们可以在这个窗口上做些事。常见的弹框类型包括:删除提示,操作提示,选项数据查询等本次就以删除提示做个例子二、弹窗效果三、弹窗实现实现教程:①制作一个删除弹窗,可以是一个元件组合(本次就用这个),也可以是一个动态面板②给删除弹窗的关闭图标加上一个交互,交互是:单击之后隐藏删除弹窗③给列表的删除按钮加上一个交互,交互是:单击之后显示删除弹窗四、总结弹窗类的基本思路都是,对弹窗设置【隐藏、可见】的交互。可能不一样的就_axrue rp9 制作菜单弹出框

探索高效浏览:Tab-Groups - 智能标签管理器-程序员宅基地

文章浏览阅读350次,点赞5次,收藏3次。探索高效浏览:Tab-Groups - 智能标签管理器项目地址:https://gitcode.com/Quicksaver/Tab-GroupsTab-Groups 是一个创新的浏览器扩展,旨在提升你的网页浏览体验,通过组织和管理大量打开的标签页,让你的工作或学习更加有条理。这款开源项目基于WebExtension API,兼容Firefox、Chrome及Chromium内核的其他浏览器,...

推荐文章

热门文章

相关标签