Spring之控制反转(IoC)

Spring IOC(控制反转)思想笔记 Spring IOC(控制反转)思想笔记 IOC控制反转基本理念就是将程序控制权从程序员手中交给用户自定义,从而避免了因为用户一个小需求的变化使得程序员需要改动大量代码。 案例 如果按照之前javaweb的固定方法,写一个简单的业务逻辑 一个DAO接口 public interface UserDao { public void getUser(); } 实现DAO接口 public class UserDaoImpl implements UserDao { @Overrid 阅读详情

一、IoC概念
IoC(Inversion of Control):中文译为控制反转。
IOC的基本概念是:不创建对象,但是描述创建它们的方式。在代码中不直接与对象和服务连接,但在配置文件中描述哪一个组件需要哪一项服务。容器负责将这些联系在一起。
  其原理是基于OO设计原则的The Hollywood Principle:Don't call us, we'll call you(别找我,我会来找你的)。也就是说,所有的组件都是被动的(Passive),所有的组件初始化和调用都由容器负责。组件处在一个容器当中,由容器负责管理。
  简单的来讲,就是由容器控制程序之间的关系,而非传统实现中,由程序代码直接操控。这也就是所谓“控制反转”的概念所在:控制权由应用代码中转到了外部容器,控制权的转移,是所谓反转。

 

二、Spring IoC
         Spring IoC容器实现了IoC设计模式,对外提供两个接口实现对Spring IoC容器的访问:
         1. BeanFactory:位于org.springframework.beans.factory包中。借助于配置文件实现对JavaBean的配置和管理。主要应用于开发Java应用。
         2. ApplicationContext:位于org.springframework.context包中。继承于BeanFactory,增加了IoC集成、处理消息资源、事件等功能。主要用于开发J2EE应用,是Spring推荐使用的接口。

         要获得appcontext.xml中定义的JavaBean,应用代码只需要调用BeanFactory的getBean方法即可。
      
         Bean的生命周期
         IoC容器定义了Spring配置文件中JavaBean应遵循的规则,即Bean定义(BeanDefinition)。任何处于IoC容器控制下的JavaBean的生命周期都存在4个阶段:
         1.实例化JavaBean。
         2.JavaBean实例的初始化,即通过IoC注入其依赖性。这一阶段将完成JavaBean实例的初始化。
         3.基于Spring应用对JavaBean实例的使用。
         4.Ioc容器销毁JavaBean实例。

        

         Bean的创建
         声明方式:<bean name="fileHelloWorld"  class="testspring.sample.HelloWorld"/>
        可用参数:
              factory-method:声明创建JavaBean的工厂方法。
              factory-bean:声明工厂类。
              <ref>:引用其它资源(bean实例)。
        初始化JavaBean
        1.可以使用autowire属性,使Spring自动将目标JavaBean需要注入的JavaBean找到并注入进来。
        2.使用dependency-check属性,保证各个Spring配置文件中各个JavaBean之间的相互关系。
        3.借助setter方法,将JavaBean的属性值注入进来。这些属性值可以使Java原型、对象类型、其它JavaBean、null等。
        4.如果JavaBean实现了org.springframework.beans.factory.BeanFactoryAware接口,则还需要调用setBeanFactory方法。
        5.Spring框架提供了若干接口,供开发者改变配置在BeanFactory中JavaBean的行为时使用。比如InitializingBean接口。BeanFactory初始化JavaBean时,会调用实现了InitializingBean接口的JavaBean中的aferPropertiesSet()方法。
        6.通过在<bean>元素中包含init-method属性能够达到同InitializingBean一样的目的。即初始化时会自动调用init-method中定义的方法。
        注意:如果5和6两者同时使用,Spring首先执行5中的aferPropertiesSet()方法,然后执行init-method中定义的方法。

 

        使用JavaBean
         一旦Spring创建并初始化JavaBean实例后,应用就可以使用JavaBean实例了。

 

        销毁JavaBean
         一旦将基于Spring的(Web)应用停止,Spring框架将调用那些JavaBean实例中存在的生命周期方法,比如实现了DisposableBean接口的JavaBean,或者在Spring配置文件中指定了destroy-method苏醒的JavaBean。
         注意:
          1.上述内容只适合于通过“singleton”方式创建的JavaBean实例。对于以“prototype”方式创建的JavaBean实例,Spring并不能够控制其生命周期。
          2.JavaBean创建时间。对于BeanFactory而言,在用户调用getBean()方法时创建JavaBean实例。而对于ApplicationContext而言,一旦ContextLoaderServlet或ContextLoaderListener初始化成功,所有JavaBean实例都将会被创建。

 

ROS2+MoveIt2+Gazebo仿真实战:从零搭建六轴机械臂控制闭环 本文详细介绍了如何从零搭建一个完整的ROS2+MoveIt2+Gazebo六轴机械臂仿真控制闭环。通过手写URDF模型、配置MoveIt2运动规划、集成Gazebo物理仿真与ROS2 Control控制器,最终实现RViz中规划轨迹、Gazebo中同步执行的完整数字孪生验证平台,为机器人算法开发和硬件验证提供低成本、高效的仿真解决方案。 阅读详情

相关推荐

光致发光(Photoluminescence, PL)入门版

关于光致发光的实际应用做出一些解释。

sinat_40546227的博客 1万+

正向代理 反向代理

如下图所示:代理1代表客户去请求访问服务器,代理2代表服务器来接收客户请求访问。整个流程是从左到右,代理1在客户的下游,所以称之为正向代理,代理2分发请求给各个真实服务器,处于真实服务器上游,所以称之为反向代理。(开个玩笑) 没必要纠结这个名次,就像spring的依赖注入和控制反转一样 ,理解含义就好。

Jarvan_Song的博客 601

LDPC码介绍:基础&编码&译码

本博客介绍了LDPC码的基本原理,其中包括校验矩阵的构造、Tanner 图和编译码的基础知识。

渺小的颗星的博客 4309

【SSM】12-Spring-初始框架和控制反转

目录 前言 1、初识spring框架 1.1 Spring框架是什么? 1.2 Spring框架的优点 1.3 Spring框架的体系结构 2、控制反转 2.1 什么是控制反转? 2.2 创建maven工程 2.3 修改pom.xml 2.4 创建接口和实现类 2.5 定义Spring容器配置文件 2.6 编写测试类 3、小结 前言 声明:本专栏文章均为观看动力节点王鹤老师三大框架的视频所撰写的笔记,笔者实力有限,内容如有错误欢迎各位小伙伴在评论区指出。 视频链接:SSM-S

m0_50964976的博客 495

空间数据库(1):Arcgis10.2连接PostgreSQL9.1,创建空间数据库,导入空间数据

1、arcgis的安装对于gis人员来说想必并不陌生,此处就不赘述了。那么就先从PostgreSQL说吧,我这里用的是跟Arcgis desktop 10.2所支持的9.1或者9.2版本,大家也可以用相对应的更高的版本来配置,注意的是版本一定要相互匹配,不仅是Arcgis与PostgreSQL的匹配,还有PostgreSQL与PostGIS匹配。 按道理desktop是32位的,应该用PostgreSQL的32位,但是我实在找不到32位的PostGIS9.1,所以就用64位的吧,后面配置部分可能需

XIAOHUA的博客 1317

apk反编译修改教程系列-----修改apk应用名称 任意修改名称 签名【一】

这个是最最简单的反编译操作了。写这个教程的目的是其中很多粉丝要求出一点入门的教程。当然演示的是使用MT来操作。还有很多类似的软件可以达到目的。例如NP apltool等等或者电脑端也有很多反编译软件修改。对于玩机用户来说。也可以在系统包里直接修改一些app。

小马哥的专栏 7261

SSM框架—Spring基础—控制反转和依赖注入(概念)

控制反转: 控制反转(IoC)是面向对象编程的一个设计原则,用于降低代码耦合度 在传统面向对象编程中,获取对象的方式是用关键字“new”主动创建一个对象,也就是说,应用程序掌握着对象的控制权。 在使用Spring框架之后,对象的实例不再由调用者来创建,而是由Spring的IoC容器来创建,IoC容器会负责控制程序之间的关系,而不是由调用者的程序代码直接控制。这样,控制权由应用代码转移到了IoC容器,控制权发生了反转,这就是Spring的控制反转。 依赖注入: 依赖注入...

qq_55293676的博客 632

【原理图PCB专题】Cadence 17.4版本原理图及PCB 模块复用

在我们设计复杂板卡的时候,往往会遇到一部分电路被反复使用的情况。Cadence允许设计者一开始就将复用模块设计好,以后只要直接调用复用模块就可以直接用以设计更复杂的电路板了。这对于大规模集成设计无疑是非常好的选择,它不仅让设计者不必花费时间在相同模块反复设计上,更有利于电路的模块化设计。

一点硬件 2016

Spring实现IOC(控制反转)的三种方式

IOC:也就是控制反转(创建对象实例的控制权反转),说的是一个类A要调用另一个类B,本来应该在类A里面创建B的实例的,控制权在A手里。现在用了Spring了,有了IOC,控制权就不在A手里了,而是交到Spring的IOC容器了,A要用到B,那Spring就把B分给A了。 下面通过具体的例子来说明: package com.spring.demo.entity; /** * 一个伟

旧城以西的博客 1万+

cursor AI代码编辑器IDE对接deepseek模型api;字节ai编辑器trae

参考: https://www.cursor.com/ https://platform.deepseek.com/https://www.cursor.com/下载安装后,注册账号登录即可 再高级里选择设置 再模型这注册模型: 模型名称一定要填正确,url地址填好,最后填上秘钥验证

weixin_42357472的博客 1万+

Transformer从菜鸟到新手(一)

从本文开始回顾一下Transformer的原理与实现细节,包括分词算法BPE的实现。最终利用从零实现的Transformer模型进行英中翻译。

日积月累,天道酬勤 2124

Spring框架中IoC(控制反转)的原理

一.IoC的基础知识以及原理: 1.IoC理论的背景:在采用面向对象方法设计的软件系统中,底层实现都是由N个对象组成的,所有的对象通过彼此的合作,最终实现系统的业务逻辑。即软件系统中对象之间的耦合,对象A和对象B之间有关联,对象B又和对象C有依赖关系,这样对象和对象之间有着复杂的依赖关系,所以才有了控制反转这个理论。 2.什么是控制反转(IoC): (1).IoC是Inver

茕夜 4万+

【学习系列】SAP RAP 29:如何创建Application Jobs(下)

本文介绍了在SAP系统中通过API创建和使用Application Jobs的方法。主要内容包括:1) 创建RAP应用并通过Action调用API创建Jobs;2) 使用事件驱动方式异步更新Job状态;3) 通过URL跳转到标准日志页面;4) 使用Custom Entity获取Job日志;5) 演示遗留接口IF_APJ_DT_EXEC_OBJECT和IF_APJ_RT_EXEC_OBJECT的使用。文章提供了详细的代码示例,展示了如何通过CL_APJ_RT_API=>SCHEDULE_JOB调度作业,

DeveloperMrMeng的博客 375

Spring IOC控制反转

在Spring容器中管理的Bean对象的作用域,可以通过scope属性或用相关注解指定其作用域。最常用是singleton(单例)或prototype(多例)。singleton:单实例,是默认值。这个作用域标识的对象具备全局唯一性。当把一个 bean 定义设置scope为singleton作用域时,那么Spring IOC容器只会创建该bean定义的唯一实例。也就是说,整个Spring IOC容器中只会创建当前类的唯一一个对象。

weixin_58069198的博客 904

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Spring IOC控制反转原理详解

查阅这些接口的源码和说明发现,每个接口都有他使用的场合,它主要是为了区分在 Spring 内部在操作过程中对象的传递和转化过程中,对对象的数据访问所做的限制。例如 ListableBeanFactory 接口表示这些 Bean 是可列表的,而 HierarchicalBeanFactory 表示的是这些 Bean 是有继承关系的,也就是每个Bean 有可能有父 Bean。AutowireCapableBeanFactory 接口定义 Bean 的自动装配规则。

2301_76166241的博客 1079

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Spring 控制反转 IOC

1.spring 控制反转介绍: 控制反转IOC(Inversion of Control),是一种包装技术类型,它本身不属于新的内容,说的再简单一点,所有对象的实例化操作都不再使用关键字new了(反射机制)。那么为什么现在的代码之中需要编写控制反转的操作呢?为了更好的解释这个问题.下面编写一个实际的程序分析。 如果员工出差,那么员工所需要做的核心处理--办理核心的操作业务,出差的目的,但...

抛弃幻想,准备斗争 976

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Spring核心之控制反转(IOC)

1、@Autowired是Spring自带的,@Resource是JSR250规范实现的,@Inject是JSR330规范实现的2、@Autowired、@Inject用法基本一样,不同的是@Inject没有required属性3、@Autowired、@Inject是默认按照类型匹配的,@Resource是按照名称匹配的4、@Autowired如果需要按照名称匹配需要和@Qualifier一起使用,@Inject和@Named一起使用,@Resource则通过name进行指定。

埃泽漫笔 1331

Spring 控制反转(IOC)容器

IoC 容器是 Spring 的核心,也可以称为 Spring 容器。Spring 通过 IoC 容器来管理对象的实例化和初始化,以及对象从创建到销毁的整个生命周期。 Spring 中使用的对象都由 IoC 容器管理,不需要我们手动使用 new 运算符创建对象。由 IoC 容器管理的对象称为 Spring Bean,Spring Bean 就是 Java 对象,和使用 new 运算符创建的对象没有区别。 Spring 通过读取 XML 或 Java 注解中的信息来获取哪些对象需要实例化。 Spring 提供

m0_53698336的博客 1146

Spring IoC:解耦与控制反转的艺术

Spring IoC(控制反转)是Spring框架的核心思想之一,它通过将对象的创建和管理权交给Spring容器,实现了代码的解耦与灵活性。IoC不仅简化了开发流程,还提高了系统的可测试性和可维护性。通过控制反转,开发者可以更专注于业务逻辑的实现,而不是对象的创建与管理。掌握Spring IoC的思想与实践,是每一位Spring开发者必须具备的核心能力,也是构建高质量、可扩展应用的重要基石。希望本文能帮助你理解 Spring IoC 的核心概念,并在实际项目中灵活运用!

2302_81090306的博客 1349

spring之控制反转IOC

spring的ioc,控制反转

奶厂小程的博客 293

Spring之IoC控制反转

本内容采用最新SpringBoot3框架版本,控制反转(Inversion of Control,IoC)是面向对象编程中的一个设计原则,用来降低程序代码之间的耦合度。

分享各类实战项目,提供源码与教程,供大家学习参考。 993

Spring入门——IoC控制反转

本博客是博主用于学习Spring的博客,如果疏忽出现错误,还望各位指正。

m0_60631836的博客 1163

Spring学习:IOC控制反转

一、Spring概述: Spring是一个开源框架,其存在的根本使命就是简化JAVA开发。为了降低JAVA开发的复杂性,Spring采取了以下四种关键策略: 基于POJO的最轻量级和最小侵入性编程; 通过依赖注入和面向接口实现松耦合; 基于切面和惯例进行声明式编程; 通过切面和模板减少样板式代码。 1.1 Spring有两个核心部分:IOC和AOP: (1) IOC: 控制反转,把创建对象过程交给Spring进行管理; (2) AOP: 面向切面,不修改源代码,...

sssxlxwbwz的博客 1979

Spring框架 —— 控制反转IOC

在前一篇文章中荔枝已经初步了解了Spring并通过一个入门案例了解了Spring的基本操作,接下来荔枝就要梳理Spring中的最为重要的知识点之一——IoC控制反转,控制反转和属性注入均是基于Java中的反射机制来实现的。所以学习这个知识点之前必须要学习Java的反射机制。在这篇文章中荔枝会着重梳理两种获取bean和操作bean的方式,其中基于注解方式来操作bean更为重要。

荔枝当大佬的博客 1394

Spring-控制反转(IOC)

在之前的学习中,已经学会了使用三层架构开发程序,也就是web—>service—>dao,但是在调用的时候层与层之间存在着代码耦合.

吃土的柚的博客 2121

Spring 的 ioc 控制反转

在传统的编程模型中,应用程序代码通常直接控制对象的创建和依赖关系。例如,一个对象需要依赖另一个对象时,通常会在代码中直接创建依赖对象。这种方式使得代码紧密耦合,不利于测试和维护。控制反转的理念是将这种控制权从应用程序代码中移除,转而交给一个容器来管理。这个容器就是Spring IoC容器。通过这种方式,对象的创建和依赖关系的管理被反转了,应用程序代码不再负责这些new 对象和创建依赖关系的任务,而是由容器来处理。

埃泽漫笔 431
上一篇: Spring之配置文件加载方式
下一篇: Spring之事件监听
weoln
博客等级 码龄21年 43粉丝 123原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值