首页 > 其他分享 >Spring(三):IoC的本质

Spring(三):IoC的本质

时间:2022-09-19 09:13:43浏览次数:51  
标签:XML 实现 Spring 本质 Bean 注解 IoC

一、图例

 

 对照上面的图,我们回想上一篇中几个代码的实现,在没有set注入之前,代码运行完全由Service层控制,用户没有选择权,选择权在程序员手中;但是使用set注入之后,用户可以主动控制service层要执行带代码,具体执行由用户自己选择。

二、本质

控制反转(IoC)是一种设计思想,DI(Dependency Injection依赖注入)是实现IoC的一种方法。在没有IoC的程序中,对象的创建以及对象之间的依赖完全在硬编码在程序中,对象的创建是由程序自己控制,是一成不变的(是指在不修改代码的前提下无法改变);但在有IoC的程序中,对象的的创建由第三方控制,我们无需对代码做出更改即可使程序的执行发生变化。

IoC是Spring框架的核心内容,他有多种方式实现,可以通过XML文件配置、可以使用注解,在新版本Spring中甚至不需要配置也可以实现IoC。

Spring容器在初始化时先读取配置文件,根据配置文件创建对象并存入IoC容器中,使用时再从IoC中获取对象。下图是官方的一个图,就是具体的一个过程:

下图显示了 Spring 工作原理的高级视图。应用程序类与配置元数据相结合,以便在创建和初始化 后,您就拥有一个完全配置且可执行的系统或应用程序。ApplicationContext

 

 

 

 采用XML方式配置Bean的时候,Bean的定义信息和实现是分离的;而采用注解二者是结合在一起的,Bean通过注解将定义信息定义在实现类中,可以达到零配置的目的。

控制反转是一种通过描述(XML或注解)并通过第三方去生产或获取特定对象的方式。在Spring中,实现控制反转的是IoC容器,实现方法是依赖注入(DI)。

 

(本文仅作个人学习记录用,如有纰漏敬请指正)

 

标签:XML,实现,Spring,本质,Bean,注解,IoC
From: https://www.cnblogs.com/jmsstudy/p/16706517.html

相关文章

  • springboot中解析JSON参数
    解析psot请求中的JSON参数Map<String,String>attrMap=newHashMap<String,String>();BufferedReaderstreamReader=null;try{streamReader=newBufferedRead......
  • Java【SpringBoot】——添加测试依赖
    在pom.xml添加依赖1<dependency>2<groupId>org.springframework.boot</groupId>3<artifactId>spring-boot-starter-test</artifactId>......
  • springboot集成mybatis获取插入数据的主键
    问题:我们想在插入一条数据后同时能够返回这条数据在表中的id,Mybatis提供了@SelectKey注解。student为数据表,主键自增SelectKey的四个属性:selectKey会将SELECTLAS......
  • SpringBoot集成Mybatis 实现InsertOrUpdate功能
    需求场景在项目开发过程中,难免会遇到这样的场景:对一张表,当数据不存在的时候,进行insert插入操作;数据存在的时候,进行update更新操作;下面就来使用Mybatis的InsertOrUpdate功......
  • 6000 字 | 16 图,吃透 Spring Cloud Gateway 原理
    大家好,我是小富~本篇给大家带来的是微服务框架中非常重要的一个组件:API网关。前言在PassJava项目中,我用到了SpringCloudGateway作为API网关,客户端的所有的请......
  • springboot代码生成器
    一、使用springboot+mybatisplus+swagger完成如下操作1、创建数据库表如下channel字段名称中文类型长度主键外键自增约束cid栏目id......
  • springboot Condition 动态value
    packagecom.example.demo.condtion;importorg.springframework.context.annotation.Conditional;importjava.lang.annotation.*;@Target({ElementType.TYPE,Ele......
  • 面试突击84:Spring 有几种事务隔离级别?
    Spring中的事务隔离级别和数据库中的事务隔离级别稍有不同,以MySQL为例,MySQL的InnoDB引擎中的事务隔离级别有4种,而Spring中却包含了5种事务隔离级别。1.什么是......
  • springboot Condition
    packagecom.example.demo.config;importcom.example.demo.condtion.ClassCondition;importcom.example.demo.domian.User;importorg.springframework.context.an......
  • 【博学谷学习记录】超强总结,用心分享 。SpringBoot 常用注解
    @RequestMapping@RequestMapping注解的主要用途是将Web请求与请求处理类中的方法进行映射。SpringMVC和SpringWebFlux都通过RquestMappingHandlerMapping和RequestMappi......