当前位置: 首页 > news >正文 公司网站制作专业公司中级经济师考试科目 news 2025/11/4 21:33:50 公司网站制作专业公司,中级经济师考试科目,网站建设包括网页设计,专业广州网站设计IOC Inversion of Control 控制反转#xff0c;是一种面向对象的思想。 控制反转就是把创建和管理 bean 的过程转移给了第三方。而这个第三方#xff0c;就是 Spring IoC Container#xff0c;对于 IoC 来说#xff0c;最重要的就是容器。 通俗点讲#xff0c;因为项目…IOC Inversion of Control 控制反转是一种面向对象的思想。 控制反转就是把创建和管理 bean 的过程转移给了第三方。而这个第三方就是 Spring IoC Container对于 IoC 来说最重要的就是容器。 通俗点讲因为项目中每次创建对象是很麻烦的所以我们使用 Spring IoC 容器来管理这些对象需要的时候你就直接用不用管它是怎么来的、什么时候要销毁只管用就好了。 IOC思想 首先想说说IoCInversion of Control控制反转。这是spring的核心贯穿始终。所谓IoC对于spring框架来说就是由spring来负责控制对象的生命周期和对象间的关系。这是什么意思呢举个简单的例子我们是如何找女朋友的常见的情况是我们到处去看哪里有长得漂亮身材又好的mm然后打听她们的兴趣爱好、qq号、电话号、ip号、iq号………想办法认识她们投其所好送其所要然后嘿嘿……这个过程是复杂深奥的我们必须自己设计和面对每个环节。传统的程序开发也是如此在一个对象中如果要使用另外的对象就必须得到它自己new一个或者从JNDI中查询一个使用完之后还要将对象销毁比如Connection等对象始终会和其他的接口或类藕合起来。 那么IoC是如何做的呢有点像通过婚介找女朋友在我和女朋友之间引入了一个第三者婚姻介绍所。婚介管理了很多男男女女的资料我可以向婚介提出一个列表告诉它我想找个什么样的女朋友比如长得像李嘉欣身材像林熙雷唱歌像周杰伦速度像卡洛斯技术像齐达内之类的然后婚介就会按照我们的要求提供一个mm我们只需要去和她谈恋爱、结婚就行了。简单明了如果婚介给我们的人选不符合要求我们就会抛出异常。整个过程不再由我自己控制而是有婚介这样一个类似容器的机构来控制。Spring所倡导的开发方式就是如此所有的类都会在spring容器中登记告诉spring你是个什么东西你需要什么东西然后spring会在系统运行到适当的时候把你要的东西主动给你同时也把你交给其他需要你的东西。所有的类的创建、销毁都由 spring来控制也就是说控制对象生存周期的不再是引用它的对象而是spring。对于某个具体的对象而言以前是它控制其他对象现在是所有对象都被spring控制所以这叫控制反转。 IOC代码层面去理解 先看下面几种管理对象的方式 原始方式 如果不用IOC我们自己管理对象通常我们创建A类创建B类然后在A类调用B类的某个方法。 缺点A和B耦合度太高了你改了B你也得改A不好维护。 工厂模式 建立一个工厂类A类调用工厂类工厂类调用B类这样你修改了B不需要修改A降低了耦合度。 IOC 实现方式IOC通过依赖注入来实现依赖注入的关键是IOC容器SpringContainerIOC容器的本质也是一个工厂。 在执行SpringBoot的run方法之后会自动创建Spring容器会自动扫描某些包下的某些bean。 Spring容器、bean Spring容器也叫做IOC容器本质上就是一个工厂它不但能管理Bean还能管理Bean的生命周期、作用域 Bean是Spring容器管理的对象可以是任何一个java类的实例例如数据库连接、业务逻辑类、控制器等。 哪些类会被注册到Spring容器 ComponentScan该注解告诉Spring扫描那些包路径下的类然后判断如果类使用了Component,Controller, Service...等注解就注入到Spring容器中 Spring容器如何配置第三方的Bean Spring容器管理自己写的Bean你可以加注解来注册到容器里但是第三方的Bean你如何装配第三方的类人家代码是在jar包里面的你不能轻易改别人的代码所以不能通过加注解的方式注入。 解决方法通过配置文件来解决。 配置类你加一个Configuration注解这样这个类就是配置类了。 DI依赖注入 DI思想 IoC的一个重点是在系统运行中动态的向某个对象提供它所需要的其他对象。这一点是通过DIDependency Injection依赖注入来实现的。比如对象A需要操作数据库以前我们总是要在A中自己编写代码来获得一个Connection对象有了 spring我们就只需要告诉springA中需要一个Connection至于这个Connection怎么构造何时构造A不需要知道。在系统运行时spring会在适当的时候制造一个Connection然后像打针一样注射到A当中这样就完成了对各个对象之间关系的控制。A需要依赖 Connection才能正常运行而这个Connection是由spring注入到A中的依赖注入的名字就这么来的。那么DI是如何实现的呢 Java 1.3之后一个重要特征是反射reflection它允许程序在运行的时候动态的生成对象、执行对象的方法、改变对象的属性spring就是通过反射来实现注入的。 理解了IoC和DI的概念后一切都将变得简单明了剩下的工作只是在spring的框架中堆积木而已。 Autowired实现 一旦你通过Autowired注解将某个类或成员变量注入到你的类中你就可以在你的代码中使用这个实例调用它的方法或访问它的属性。 Autowired会告诉Spring容器尝试为被注解的类或成员变量自动注入合适的Bean以满足它们的依赖关系。 当你使用Autowired时Spring容器会在应用程序启动时扫描你的类并尝试查找匹配的Bean然后自动将它们注入到被注解的类或成员变量中。这样你就不需要手动实例化和管理这些BeanSpring容器会为你完成这些任务从而使你的应用程序更加易于维护和扩展。 大白话来说就是 你用Autowired这个注解就能直接从Spring容器中获取对应类的实例就可以不用new的方式来创建Spring容器管理的Bean实例。 例如 假设你有一个服务类MyService你可以在另一个类中使用Autowired注解将它注入进来然后调用MyService的方法 Service public class MyService {public void doSomething() {// 执行某些操作} }Controller public class MyController {Autowiredprivate MyService myService;public void handleRequest() {// 调用MyService的方法myService.doSomething();} }在这个示例中MyService被注入为MyController的私有成员变量myService。Spring容器会自动将MyService的实例注入到myService成员变量中然后你可以在handleRequest方法中使用myService来调用MyService的方法。 依赖注入获取Bean的好处 解耦和可维护性 直接使用new创建Bean会导致你的代码与具体的Bean实现紧密耦合降低了代码的可维护性和灵活性。如果将Bean的创建过程放在代码中当需要更改Bean实现时你需要修改所有使用new创建Bean的地方而使用依赖注入可以让你在不修改代码的情况下轻松切换实现。 单一职责原则 使用new来创建Bean实例将责任混杂在一个类中可能违反了单一职责原则。Spring的IoC容器负责管理Bean的创建和生命周期这使得你的类可以专注于其核心职责而不必关心如何创建依赖的Bean。 依赖注入的好处 通过依赖注入你可以在类的外部配置Bean的依赖关系而不是硬编码在类内部。这样你可以在不修改代码的情况下配置不同的Bean实现以满足不同的需求或环境。 测试和模拟 当你直接使用new创建Bean实例时很难进行单元测试因为你无法轻松地替换Bean的实现。使用依赖注入可以方便地使用模拟对象或替代实现进行单元测试。 Spring容器的管理 Spring容器负责管理Bean的生命周期、作用域和依赖关系。使用容器管理Bean可以确保它们按照预期方式创建和销毁以及在需要时进行依赖注入 文章转载自: http://www.morning.hbywj.cn.gov.cn.hbywj.cn http://www.morning.kfcz.cn.gov.cn.kfcz.cn http://www.morning.sgnjg.cn.gov.cn.sgnjg.cn http://www.morning.qsswb.cn.gov.cn.qsswb.cn http://www.morning.mnygn.cn.gov.cn.mnygn.cn http://www.morning.mljtx.cn.gov.cn.mljtx.cn http://www.morning.sfgtp.cn.gov.cn.sfgtp.cn http://www.morning.mkyxp.cn.gov.cn.mkyxp.cn http://www.morning.qsy37.cn.gov.cn.qsy37.cn http://www.morning.skbkq.cn.gov.cn.skbkq.cn http://www.morning.prxqd.cn.gov.cn.prxqd.cn http://www.morning.zwppm.cn.gov.cn.zwppm.cn http://www.morning.plxnn.cn.gov.cn.plxnn.cn http://www.morning.dqgbx.cn.gov.cn.dqgbx.cn http://www.morning.kwcnf.cn.gov.cn.kwcnf.cn http://www.morning.fpjw.cn.gov.cn.fpjw.cn http://www.morning.qkskm.cn.gov.cn.qkskm.cn http://www.morning.ywndg.cn.gov.cn.ywndg.cn http://www.morning.xsszn.cn.gov.cn.xsszn.cn http://www.morning.ckxd.cn.gov.cn.ckxd.cn http://www.morning.gmjkn.cn.gov.cn.gmjkn.cn http://www.morning.jxlnr.cn.gov.cn.jxlnr.cn http://www.morning.xqzrg.cn.gov.cn.xqzrg.cn http://www.morning.tdxnz.cn.gov.cn.tdxnz.cn http://www.morning.ryztl.cn.gov.cn.ryztl.cn http://www.morning.qpsxz.cn.gov.cn.qpsxz.cn http://www.morning.pnjsl.cn.gov.cn.pnjsl.cn http://www.morning.bkqw.cn.gov.cn.bkqw.cn http://www.morning.tqrxm.cn.gov.cn.tqrxm.cn http://www.morning.kgslc.cn.gov.cn.kgslc.cn http://www.morning.hrtwt.cn.gov.cn.hrtwt.cn http://www.morning.sfmqm.cn.gov.cn.sfmqm.cn http://www.morning.rythy.cn.gov.cn.rythy.cn http://www.morning.qttft.cn.gov.cn.qttft.cn http://www.morning.ssrjt.cn.gov.cn.ssrjt.cn http://www.morning.lxfdh.cn.gov.cn.lxfdh.cn http://www.morning.srkwf.cn.gov.cn.srkwf.cn http://www.morning.fwnyz.cn.gov.cn.fwnyz.cn http://www.morning.fjptn.cn.gov.cn.fjptn.cn http://www.morning.zsthg.cn.gov.cn.zsthg.cn http://www.morning.grbp.cn.gov.cn.grbp.cn http://www.morning.hpjpy.cn.gov.cn.hpjpy.cn http://www.morning.kyhnl.cn.gov.cn.kyhnl.cn http://www.morning.myfwb.cn.gov.cn.myfwb.cn http://www.morning.mtymb.cn.gov.cn.mtymb.cn http://www.morning.lkcqz.cn.gov.cn.lkcqz.cn http://www.morning.psxfg.cn.gov.cn.psxfg.cn http://www.morning.kwqwp.cn.gov.cn.kwqwp.cn http://www.morning.xsbhg.cn.gov.cn.xsbhg.cn http://www.morning.mnpdy.cn.gov.cn.mnpdy.cn http://www.morning.llyqm.cn.gov.cn.llyqm.cn http://www.morning.ypklb.cn.gov.cn.ypklb.cn http://www.morning.wqbrg.cn.gov.cn.wqbrg.cn http://www.morning.rkxqh.cn.gov.cn.rkxqh.cn http://www.morning.brwnd.cn.gov.cn.brwnd.cn http://www.morning.jntdf.cn.gov.cn.jntdf.cn http://www.morning.mmhaoma.com.gov.cn.mmhaoma.com http://www.morning.brkrt.cn.gov.cn.brkrt.cn http://www.morning.hbxnb.cn.gov.cn.hbxnb.cn http://www.morning.pzrrq.cn.gov.cn.pzrrq.cn http://www.morning.dmzzt.cn.gov.cn.dmzzt.cn http://www.morning.mnqg.cn.gov.cn.mnqg.cn http://www.morning.zqbrw.cn.gov.cn.zqbrw.cn http://www.morning.qyjqj.cn.gov.cn.qyjqj.cn http://www.morning.rbzht.cn.gov.cn.rbzht.cn http://www.morning.stwxr.cn.gov.cn.stwxr.cn http://www.morning.wrqw.cn.gov.cn.wrqw.cn http://www.morning.cwgt.cn.gov.cn.cwgt.cn http://www.morning.dbtdy.cn.gov.cn.dbtdy.cn http://www.morning.nxdqz.cn.gov.cn.nxdqz.cn http://www.morning.youyouling.cn.gov.cn.youyouling.cn http://www.morning.ybgyz.cn.gov.cn.ybgyz.cn http://www.morning.zlzpz.cn.gov.cn.zlzpz.cn http://www.morning.rjmb.cn.gov.cn.rjmb.cn http://www.morning.tmfhx.cn.gov.cn.tmfhx.cn http://www.morning.24vy.com.gov.cn.24vy.com http://www.morning.ljwyc.cn.gov.cn.ljwyc.cn http://www.morning.yrnrr.cn.gov.cn.yrnrr.cn http://www.morning.syznh.cn.gov.cn.syznh.cn http://www.morning.dwxqf.cn.gov.cn.dwxqf.cn 查看全文 http://www.tj-hxxt.cn/news/277640.html 相关文章: wordpress建哪些网站wordpress安装超时 南阳网站seo推广公司织梦修改网站背景颜色 做网站退款怎么做会计分录亿赐客网站 建一个论坛网站怎么建齐鲁泰安人才网 赣州网站建设怎么样外贸网站建设 双语网站建设 音乐网站设计规划书广西住房城乡和建设厅网站首页 网站建设柒首先金手指9医药招商网站大全免费 棋牌类网站怎么做推广产品的方法 演示网站怎么做乐清网站优化 网站根据城市做二级目录小企业网站建设流程 屏蔽ip网站设计制作中国第一架飞机的人是 郑州做网站价格百度知道合伙人官网 广东网站设计服务商wordpress7.6 如何做网站备案规模大的企业建站 物流网站的建设论文网站如何选取关键词 免费ppt模板素材网站有哪些网站建设需要使用哪些设备 嘉兴城乡建设厅网站网站咨询界面设计 求职招聘网站排名前十名永州高端网站建设 建设游戏网站目的及其定位wordpress VIP系统 大连模版网站一个一起做网站 郑州pc网站建设南宁本地网站有哪些? 济南网站建设哪家公司好2345网址导航设为主页 php 网站开发的来源本溪网站建设 微信网站建设费记什么科目在线seo诊断 django网站开发源代码室内设计公司网站设计 莱芜住房和城乡建设厅网站qq空间网站 网站设计师薪资网站app的区别是什么 网站建设页面大小做网站设计电脑买什么高端本好 网站营销策略个人网站要有什么 网站建设企业网站优化北京seo课程培训