二、IOC容器

news2024/10/10 15:09:25

文章目录

  • 1. IOC的底层原理
    • 1.1 什么是IOC
    • 1.2 IOC 底层原理
    • 1.3 画图讲解 IOC 底层原理
  • 2. IOC接口(BeanFactory)
  • 3. IOC 操作 Bean 管理(概念)
    • 3.1 什么是Bean管理
    • 3.2 Bean管理操作的两种方式
  • 4. IOC操作 Bean 管理(基于 xml)
    • 4.1 基于XML方式创建对象
    • 4.2 基于 xml 方式注入属性
      • 4.2.1 第一种注入方式:使用 set 方法进行注入
      • 4.2.2 第二种注入方式:使用有参数构造进行注入
    • 4.3 p 名称空间注入(了解)
  • 5. IOC 操作 Bean 管理(xml 注入其他类型属性)
    • 5.1 字面量
    • 5.2 注入属性-外部 bean
    • 5.3 注入属性-内部 bean
    • 5.4 注入属性-级联赋值
  • 6. IOC 操作 Bean 管理(xml 注入集合属性)
    • 6.1 注入属性 --- 数组、list与Map集合
    • 6.2 在集合里面设置对象类型值
    • 6.3 把集合注入部分提取出来
  • 7. IOC 操作 Bean 管理(FactoryBean)
  • 8. IOC 操作 Bean 管理(bean 作用域 --- 表示设置单实例还是多实例)
  • 9. IOC 操作 Bean 管理(bean 生命周期)
    • 9.1 生命周期
    • 9.2 bean 生命周期
    • 9.3 演示 bean 生命周期
    • 9.4 bean 的后置处理器,bean 生命周期有7步
    • 9.5 演示添加后置处理器(BeanPostProcessor)效果
  • 10. IOC 操作 Bean 管理(xml 自动装配)
    • 10.1 什么是自动装配
    • 10.2 演示自动装配过程
  • 11. IOC 操作 Bean 管理(外部属性文件)
    • 11.1 直接配置数据库信息
    • 11.2 引入外部属性文件配置数据库连接池
  • 12. IOC 操作 Bean 管理(基于注解方式)
    • 12.1 什么是注解
    • 12.2 Spring 针对 Bean 管理中创建对象提供注解
    • 12.3 基于注解方式实现对象创建
    • 12.4 开启组件扫描细节配置
    • 12.5 基于注解方式实现属性注入
      • 12.5.1 @Autowired:根据属性类型进行自动装配
      • 12.5.2 @Qualifier:根据名称进行注入
      • 12.5.3 @Resource:可以根据类型注入,可以根据名称注入
      • 12.5.4 @Value:注入普通类型属性
    • 12.6 完全注解开发

1. IOC的底层原理

1.1 什么是IOC

(1)控制反转,把对象创建和对象之间的调用过程,交给 Spring 进行管理
(2)使用 IOC 目的:为了耦合度降低
(3)做入门案例就是 IOC 实现

1.2 IOC 底层原理

(1)xml 解析、工厂模式、反射

1.3 画图讲解 IOC 底层原理

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2. IOC接口(BeanFactory)

在这里插入图片描述

3. IOC 操作 Bean 管理(概念)

3.1 什么是Bean管理

在这里插入图片描述

3.2 Bean管理操作的两种方式

在这里插入图片描述

4. IOC操作 Bean 管理(基于 xml)

4.1 基于XML方式创建对象

在这里插入图片描述

4.2 基于 xml 方式注入属性

  • DI:依赖注入,就是注入属性

4.2.1 第一种注入方式:使用 set 方法进行注入

在这里插入图片描述

在这里插入图片描述

4.2.2 第二种注入方式:使用有参数构造进行注入

在这里插入图片描述

在这里插入图片描述

4.3 p 名称空间注入(了解)

在这里插入图片描述

5. IOC 操作 Bean 管理(xml 注入其他类型属性)

5.1 字面量

在这里插入图片描述

5.2 注入属性-外部 bean

在这里插入图片描述

5.3 注入属性-内部 bean

在这里插入图片描述

在这里插入图片描述

5.4 注入属性-级联赋值

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

6. IOC 操作 Bean 管理(xml 注入集合属性)

6.1 注入属性 — 数组、list与Map集合

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

6.2 在集合里面设置对象类型值

在这里插入图片描述

6.3 把集合注入部分提取出来

在这里插入图片描述

在这里插入图片描述

7. IOC 操作 Bean 管理(FactoryBean)

在这里插入图片描述

在这里插入图片描述

8. IOC 操作 Bean 管理(bean 作用域 — 表示设置单实例还是多实例)

1、在 Spring 里面,设置创建 bean 实例是单实例还是多实例
在这里插入图片描述

在这里插入图片描述

9. IOC 操作 Bean 管理(bean 生命周期)

  • 注意:需要配置 初始化的方法销毁的方法

9.1 生命周期

在这里插入图片描述

9.2 bean 生命周期

在这里插入图片描述

9.3 演示 bean 生命周期

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

9.4 bean 的后置处理器,bean 生命周期有7步

在这里插入图片描述

在这里插入图片描述

9.5 演示添加后置处理器(BeanPostProcessor)效果

  • 注意:BeanPostProcessor实现的方法会作用于所有的bean的生命周期中
    在这里插入图片描述

在这里插入图片描述

10. IOC 操作 Bean 管理(xml 自动装配)

10.1 什么是自动装配

(1)根据指定装配规则(属性名称或者属性类型),Spring 自动将匹配的属性值进行注入

10.2 演示自动装配过程

在这里插入图片描述

在这里插入图片描述

11. IOC 操作 Bean 管理(外部属性文件)

11.1 直接配置数据库信息

在这里插入图片描述

11.2 引入外部属性文件配置数据库连接池

在这里插入图片描述

在这里插入图片描述

  • 注:名称空间用以区分重名的标签。在 xml 中 ${} 是引用表达式

12. IOC 操作 Bean 管理(基于注解方式)

12.1 什么是注解

(1)注解是代码特殊标记,格式:@注解名称(属性名称=属性值, 属性名称=属性值…)
(2)使用注解,注解作用在类上面,方法上面,属性上面
(3)使用注解目的:简化 xml 配置

12.2 Spring 针对 Bean 管理中创建对象提供注解

在这里插入图片描述

12.3 基于注解方式实现对象创建

在这里插入图片描述

在这里插入图片描述

12.4 开启组件扫描细节配置

在这里插入图片描述

12.5 基于注解方式实现属性注入

12.5.1 @Autowired:根据属性类型进行自动装配

在这里插入图片描述

12.5.2 @Qualifier:根据名称进行注入

在这里插入图片描述

在这里插入图片描述

12.5.3 @Resource:可以根据类型注入,可以根据名称注入

在这里插入图片描述

12.5.4 @Value:注入普通类型属性

在这里插入图片描述

12.6 完全注解开发

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2202339.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

go发送邮件:在Go语言中实现发邮件的教程?

go发送邮件的教程指南?怎么使用Go语言发送电子邮件? Go语言,作为一种简洁、高效且并发性强的编程语言,自然也提供了丰富的库来支持邮件发送功能。AokSend将详细介绍如何在Go语言中实现发送邮件的功能,帮助你快速掌握这…

Video Ocean,又一AI视频生成神器!

Video Ocean,又一AI视频生成神器! 引言 大家好,今天想和大家聊聊一个特别的工具——Video Ocean。在如今这个短视频盛行的时代,大家都知道,制作一个吸引眼球的视频可不是一件简单的事情。传统的视频编辑软件复杂又费…

Gin解说

Gin是一个用Go语言编写的高性能、开源的Web框架,它被设计为简单、快速和灵活。Gin非常适合用于构建RESTful API和微服务。以下是Gin框架的一些核心特点: 特点 1.高性能:Gin使用了高速的HTTP路由器,它基于Radix树实现&#xff0c…

AI直播元年:盘点2025年经典实用的十款AI直播工具,特别是第一款!

AI直播元年:盘点2025年经典实用的十款AI直播工具,特别是第一款! 随着人工智能(AI)技术的飞速发展,直播行业正经历着前所未有的变革。2025年,被誉为“AI直播元年”,这一年见证了众多…

2.4 Service服务层

今天,我将向大家介绍在Spring Boot应用程序中实现Service层的方法,并通过实战演示如何测试Service层。 首先,让我们回顾一下Service层在MVC架构中的作用。Service层位于Model和Controller之间,主要负责处理业务逻辑。它封装了应用…

多线程—— Thread 类及常见用法(详解)

前言 本篇文章会介绍 Java 中的 Thread 类常见的构造方法、常见属性及其常见的用法,会列举一些代码例子来更直观的感受每个方法是作用,文章还会介绍 Java 中线程的状态及他们之间的转换关系,那么下面就开始今天的分享吧~~ 一、常见构造方法 …

ant-design-vue 可输入表格的校验方法

1、思路&#xff0c;首先用a-form包裹a-table&#xff0c;( 主要是name的取值问题&#xff0c;要严格按照[数据源,index,校验的字段]来) <a-form ref"form" :model"formData" :rules"rules"><a-table :dataSource"formData.table…

charAt,chartCodeAt,codePointAt,fromCodePoint,fromCharCode

生僻字的length算2,有些空格是特殊空格,比如\u3000 u3000不是全角空格&#xff0c;u3000是表意字空格&#xff08;Ideographic Space&#xff09;&#xff0c;宽度和一个表意字&#xff08;汉字&#xff09;相同。它应当被当做汉字来处理。比如&#xff0c;在一些排版中&#x…

Vxe UI vue vxe-table select 下拉框选项列表数据量超大过大时卡顿解决方法

Vxe UI vue vxe-table vxe-grid select 下拉框选项列表数据量超大过大时卡顿解决方法 查看 github vxe-table 官网 vxe-table 本身支持虚拟滚动&#xff0c;数据量大也是支持的&#xff0c;但是如果在可编辑表格中使用下拉框&#xff0c;下拉框的数据量超大时&#xff0c;可能…

【源码+文档+调试讲解】宜家宜业物业管理系统node.js框架

摘 要 近年来&#xff0c;科技飞速发展&#xff0c;在经济全球化的背景之下&#xff0c;互联网技术将进一步提高社会综合发展的效率和速度&#xff0c;互联网技术也会涉及到各个领域&#xff0c;而宜家宜业物业管理系统在网络背景下有着无法忽视的作用。信息管理系统的开发是…

Chromium 如何构建一个单独exe c++

1、在src目录下新建一个jdtest文件夹 src\jdtest 2、在jdtest文件下添加BUILD.gn jdtest.cc build.gn 内容如下&#xff1a; # Copyright 2014 The Chromium Authors # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file…

python27_strip()去除函数

strip()去除函数 # 示例字符串 s1 "*hello*world*oh*yeah*" s2 " helloworldohyeah "# 使用 strip() 去除两端的 * def StrStrip(a):result_strip a.strip("*")return result_strip# 替换成空字符串 def StrReplaceNull(a):result_empty a.…

OOOPS:零样本实现360度开放全景分割,已开源 | ECCV‘24

全景图像捕捉360的视场&#xff08;FoV&#xff09;&#xff0c;包含了对场景理解至关重要的全向空间信息。然而&#xff0c;获取足够的训练用密集标注全景图不仅成本高昂&#xff0c;而且在封闭词汇设置下训练模型时也受到应用限制。为了解决这个问题&#xff0c;论文定义了一…

软考《信息系统运行管理员》- 4.2信息系统软件运维的管理

4.2信息系统软件运维的管理 管理流程 信息系统软件运维服务的四个关键要素是&#xff1a;人员、资源、技术和过程&#xff0c;每个要素通过关键 指标反映运维服务的能力。 人员 确保提供信息系统软件运维服务的相关人员具备应有的运维服务能力&#xff0c;主要从人员管理、 …

掌握未来:2025年秋招LLM及多模态模型面试精华

目录 大模型常用微调方法LoRA和Ptuning的原理介绍Stable Diffusion的原理为何现在的大模型大部分是Decoder-only结构如何缓解LLMs复读机问题为什么Transformer块使用LayerNorm而不是BatchNormTransformer为何使用多头注意力机制监督微调SFT后LLM表现下降的原因微调阶段样本量规…

【大数据】Spark弹性分布式数据集RDD详细说明

文章目录 整体介绍一、定义与特性二、操作与转换三、存储级别与持久化四、依赖关系与容错机制五、优化与性能调优 常见操作支持的数据格式1.文本文件 (Text Files)2. CSV 文件3. JSON 文件4. Parquet 文件5. Sequence Files6.Hadoop文件读取A. 读取HDFS上的文本文件B. 使用Hado…

深度学习基础—人脸识别

在人脸识别领域&#xff0c;常常有两个词容易被混淆&#xff0c;人脸验证和人脸识别。人脸验证是输入一个人的照片和名字&#xff08;或者ID&#xff09;&#xff0c;验证这个人是否和名字相符。人脸识别是输入一个人的照片&#xff0c;识别这个人是否是数据库中存在的人。人脸…

VScode中配置可编写C/C++代码

VScode的下载 下载地址&#xff1a;https://code.visualstudio.com/ 安装中文插件 重启后&#xff0c;生效&#xff01;&#xff01;&#xff01; 下载和配置MinGW-w64 https://github.com/niXman/mingw-builds-binaries/releases 这里可以自行选择线程模型WIN32或posix&a…

【Linux报错】“-bash: cd: too many arguments“

问题描述 今天使用 cd 想要调整某个文件目录时&#xff0c;发现以下报错 原因分析&#xff1a; arguments 是参数的意思&#xff0c;该报错提示参数过多&#xff0c;意味着系统识别到了多余参数 本质原因&#xff1a;你的命令中输入了多余的 ”空格“ &#xff0c;检查一…

手写Spring第三篇番外,反射的基本使用

上一篇发出去之后&#xff0c;我有一个朋友说 beanDefinition.getBeanClass().newInstance() 这句代码太突兀了&#xff0c;就像是在甜甜的睡梦中&#xff0c;突然脚踩悬崖惊醒。 像我这种插朋友两刀的人必须安排了&#xff0c;不止安排 newInstance 还把反射基本用法也给安排了…