首页 > 其他分享 >SpringIOC 容器

SpringIOC 容器

时间:2024-07-15 20:07:42浏览次数:8  
标签:容器 SpringIOC 配置文件 对象 组件 IOC

SpringIOC 容器

一、组件的概念

什么是组件?

常规的三层架构处理请求流程:

img

划分为组件后:

image1

组件就是所有可以重用的java对象,组件一定是对象,对象不一定是组件

 

二、Spring 进行组件管理

Spring框架替代了程序员原有的new对象和对象属性赋值的动作

  • 组件对象实例化

  • 组件属性赋值

  • 组件对象之间引用

  • 组件对象存活周期管理

我们只需要写配置文件,告诉Spring哪些组件需要它管理,以及他们之间的引用关系

优势:

  • 降低组件之间的耦合性,之前需要在类中去 new 另一个类,是强耦合,使用 SpringIOC 容器通过依赖注入机制,让这两个类的依赖关系减弱,降低耦合性

  • 提高代码可重用性和可维护性

  • 方便配置和管理

  • 交给Spring管理的对象,方可享受Spring框架的其他功能

 

三、SpringIOC 容器

普通容器:只能用来存储,没有其他功能。比如数组、集合等

复杂容器:不仅能存放,还能对内部的数据进行管理,程序中就像 Servlet容器就是复杂容器,创建对象,使用对象,销毁对象。

SpringIOC就是一个复杂容器,不仅可以存储组件,还从内部维护组件的生命周期,从创建到销毁的回调,还能在IOC容器内进行组件功能的扩展,加上事务等。

SpringIOC容器负责实例化、配置和组装bean,通过配置文件的形式获取这些指令。配置文件有三种形式:XML、Java注解、Java代码

SpringIOC容器具体接口和实现类

接口:

BeanFactory 只是规定了一些基本的方法:如何创建存储组件,如何对外 提供组件

ApplicationContext 是 BeanFactory 的子接口,它进行了一些扩展:

  • AOP

  • 消息资源处理(用于国际化)

  • web项目的支持

实现类:

ApplicationContext的实现类

  • ClassPathXmlApplicationContext

    • 配置文件是 xml 格式

    • 放在项目的类路径下(resource或src下)

  • FileSystemXmlApplicationContext

    • 配置文件是xml

    • 放在非项目路径下

  • WebApplicationContext

    • web项目对应的ioc容器

  • AnnotationConfigApplicationContext

    • 配置文件使用的是 java类

 

配置方式有三种:XML、注解、Java类

目前使用较多的是 java类 + 注解

 

控制反转(IOC)

当应用程序需要一个对象时,不再是应用程序直接创建对象,而是由IOC容器来创建和管理,控制权由应用程序转移到IOC容器中,也就是反转了 控制权

 

依赖注入(DI)

DI是指在组件之间传递依赖关系的过程中,将依赖关系在容器内部进行处理,这样就不必在应用程序中硬编码对象之间的依赖关系,实现了对象之间的解耦合。也就是之前 把一个对象赋值给另一个对象的操作在IOC容器中进行

 

IOC和DI 的实现步骤

  1. 写配置文件

  2. 实例化 IOC 容器

  3. 获取 Bean(组件)

标签:容器,SpringIOC,配置文件,对象,组件,IOC
From: https://www.cnblogs.com/wztblogs/p/18303880

相关文章

  • 使用K8S部署的禅道怎么修改不使用容器自带的数据库而使用其他数据库
    使用K8S部署禅道参考https://www.cnblogs.com/minseo/p/17870641.html如果想要使用不使用容器内自带的数据库修改配置文件找到pvc原始文件位置修改配置文件修改以下配置文件#zentao/config/my.php修改数据库的地址,设置用户名和密码<?php$config->installed=......
  • Linux中使用Docker安装Redis容器以及布隆过滤器
    前言在项目中,一般普遍都会用到Redis,在准备学习Redis的相关的东西时,其中提到了缓存穿透、缓存击穿、缓存雪崩的问题。其中对于缓存穿透的一个解决方案中就有提到布隆过滤器,而布隆过滤器的也有许多提供方式(Guava、Redisson、RedisBloom),前面都是基于本地的,所以就选择了Redis官方......
  • 运维系列:拒绝用户‘root‘@‘172.17.0.1‘访问在本地Docker容器中运行的mysql数据库
    拒绝用户'root'@'172.17.0.1‘访问在本地Docker容器中运行的mysql数据库拒绝用户'root'@'172.17.0.1‘访问在本地Docker容器中运行的mysql数据库问题:答案:拒绝用户’root’@'172.17.0.1‘访问在本地Docker容器中运行的mysql数据库问题:我正在尝试连接到在本地Dock......
  • Python数据容器(3)--遍历与列表生成式
    文章目录遍历直接遍历索引遍历list列表tuple元组字典遍历get()方法items()方法enumerate()函数与zip()函数enumerate()函数zip()函数列表生成式语法表现形式编写基本的列表生成式带有条件的列表生成式嵌套列表生成式字符串与列表之间的转换总结遍历:列表生成式遍......
  • C++ STL常用容器之vector(顺序容器)
    文章目录前言一、vector的介绍1.1vector的优点1.2vector的缺点1.3使用场景二、vector常用的操作2.1创建、初始化以及遍历容器2.2查询容器大小2.3访问容器中的元素2.4往容器中添加元素2.5删除容器中的元素2.6清空容器中的元素总结前言本文主要介绍C++STL......
  • Windows10下的docker容器启动命令docker -v相对路径的挂载目录位置
    今天研究docker容器时,启动命令使用到了docker-vtest:/app/backend/data有个从宿主机写入文件到容器这个目录的需求,于是就尝试在宿主机上找到这个test目录找了一圈都没找到,于是四处搜索,终于在stackoverflow上面找到了https://stackoverflow.com/questions/61083772/where-are-......
  • containerd 容器基础环境组件的搭建
    1基础环境说明(1)本次所有部署软件版本说明软件名称版本号操作系统内核(后续升级为lt-5.4.278)CentOS7.9.2009(3.10.0-1160.el7)1c1GB20GBCentOS-7-x86_64-Minimal-2009.isocontainerdv1.6.6cfsslv1.6.1cniv1.1.1crictlv1.24.2nerdctl1.7.6......
  • Python数据容器(dict字典、set集合)
    dic字典dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。字典的创建使用大括号{}包含键值对,并用冒号:分隔键和值,形成键:值对。字典的特性唯一键:字典中的每个键都必须是唯一的。值可以取任何数据类型,如字符串,数字,元组。无序(Python......
  • Python数据容器(1)--列表与元组
    数据容器在Python中,数据容器是指能够存储多个数据项(可以是不同类型的数据)的数据结构。Python提供了多种内置的数据容器类型,每种类型都有其特定的用途和特性。Python中最常用的数据容器有:List列表、Tuple元组、Dictionary字典、Set集合。本篇我们来介绍其中的List列表和Tuple......
  • 第二部分:关键技术领域的开源实践【容器化】
    企业开源中的容器化是一个重要的发展趋势,它在支撑企业持续信息化方面能发挥多重关键作用。以下是容器化对企业持续信息化的主要影响:标准化和一致性:容器化提供了一种标准化的方式来打包和部署应用程序,无论是在开发、测试还是生产环境中,都能确保一致的运行环境,减少“在我的机器......