第二章:Spring核心思想和IOC和AOP依赖注入

news2025/7/28 3:07:53

Spring 中IOC 如何理解?

中文控制反转,如何控制反转?

是一种思想,交给Spring容器来管理的一种思想,具体扫描注解,实现注入容器内。
平时使用某个类调用某个类的内的方法,需要先创建类的对象,现在通过注解找到这个类,然后Spring容器帮我们执行这个new 操作,创建对象实例。
把对象的创建和调用过程交给spring进行管理。它的目的是降低耦合度。
具体的实现:通过依赖注入,通俗讲,就是提前将所有的想要对模型对象的操作接口、对象、静态资源等用配置文件或者注解的形式交给容器管理。举例,注解@Controller、@Autowired等等,或者通过xml形式注入。
先后执行顺序都以代码的形式给Spring容器交代好,通过扫描注解和配置XML形式注入到Spring容器中,就是统统装桶里,这个桶好听点就是容器,
就是各种各样List、ArrayList、Vector及map、HashTable、HashMap、HashsetArrayList和HashMap称之为Collection 和 Map 
举例: 比方说删除某条数据,从前端发送请求,后台接口被调用,Spring容器根据已经通过实现WebMvcConfigurer(添加拦截器和处理器两个数组)查找请求的接口是是哪个Collection 内的,而且这些就是Spring框架中的方法在预处理和拦截是否应该执行,判断标志是根据请求的接口是否在处理器内,如果在拦截器数组内,那就拒绝处理
而处理器内数组的接口是我们手写代码注入进去的,此时交给容器处理,
不就是控制权被剥夺了嘛,控制反转。

Spring 中依赖注入(DI)和依赖查找如何理解?

控制反转的主要形式有两种:依赖查找和依赖注入
依赖查找:容器提供回调接口和上下文条件给组件。EJB和Apache Avalon 都使用这种方式。这样一来,组件就必须使用容器提供的API来查找资源和协作对象,仅有的控制反转只体现在那些回调方法上(也就是上面所说的 类型1):容器将调用这些回调方法,从而让应用代码获得相关资源。
依赖注入:组件不做定位查询,只提供普通的Java方法让容器去决定依赖关系。容器全权负责的组件的装配,它会把符合依赖关系的对象通过JavaBean属性或者构造函数传递给需要的对象。通过JavaBean属性注射依赖关系的做法称为设值方法注入(Setter Injection);将依赖关系作为构造函数参数传入的做法称为构造器注入(Constructor Injection)。
举例:
基于注解注入即使用@Autowire(或者@Resource)注解进行注入。

Spring 中AOP 如何理解?

中文名:面向切面编程
接口执行是一条路,aop是另一条路,这两条路垂直,产生的十字路口处产生aop产生切面,
既不影响“交通”,也不影响aop要实现的功能特性。
图解:
在这里插入图片描述
分析:

纵向切面  分离OOP(面向对象)行为
特点:无论怎么切,切的方向和OOP执行方向呈直角,隔离各个业务逻辑,相当于十字路口的另一条路,
在这个“路口”,可以在执行接口过程中穿插切面,既可以连接,又可以监控执行所有过程和状态。
总之
提供一些必备的功能,对被访问对象实现加锁或解锁功能。
以保证所有在修改数据对象的操作之前能够调用lock()加锁,在它使用完成后,调用unlock()解锁。

针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各部分之间低耦合性的隔离效果。
利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。
主要功能
日志记录,性能统计,安全控制,事务处理,异常处理等等。

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

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

相关文章

E 排队(排列组合)[牛客小*白月赛61]

题面如下: 思路 or 题解: 对于一个长度为 nnn 的 排列组合 如果存在一对 逆序对 (x,y)(x, y)(x,y) xxx 在 yyy 的前面有 n∗(n−1)2\frac{n * (n - 1)}{2}2n∗(n−1)​ 种情况 剩下 n−2n - 2n−2 个位置可以随意填数进去,不会影响到逆序对 …

Windows OpenGL ES 图像单色

目录 一.OpenGL ES 图像单色 1.原始图片2.效果演示 二.OpenGL ES 图像单色源码下载三.猜你喜欢 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 基础 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 特效 零基础 OpenGL E…

(STM32)从零开始的RT-Thread之旅--SPI驱动ST7735(2)

上一篇: (STM32)从零开始的RT-Thread之旅--PWM驱动ST7735调光 本篇使用的驱动来自ST官方提供: https://github.com/STMicroelectronics/stm32-st7735.git 需要的可以直接git clone下来移植,核心代码无关芯片型号,可移植性很不…

销量上不去?跨境电商出现这5种迹象,你需要Starday了!

随着2015年"互联网"时代的来临,跨境电商行业逐步走进了资本市场的视野中,跨境电商成为了有望对抗出口增速下台阶的利器。近年来,随着国际贸易条件的恶化,以及欧洲、日本的需求持续疲弱,中国出口贸易增速出现…

[附源码]Python计算机毕业设计jspm郫县兼职信息系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

Egg实现用户注册登录以及使用jwt进行token鉴权

目录 什么是用户鉴权 注册接口 登录接口 jwt解密token 在一个后台服务中,用户鉴权是一个重点,几乎所有的需求都是围绕用户(token)去进行设计的,所以在用户鉴权也是我们必须要重视的课程,本章我们就利用…

【踩坑日记 · 前端】为 Excalidraw 添加中文手写字体

前言 Excalidraw 是一款完全免费的手绘风格绘图在线应用,能快速画出漂亮的流程图、示意图和图表,地址: Excalidraw | Hand-drawn look & feel • Collaborative • Secure 但美中不足的是,Excalidraw 只支持英文手写字体&…

[附源码]Python计算机毕业设计爱行无忧旅游票务管理系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

一文搞定,JMeter的三种参数化方式

1、Test Plan 中添加变量 可以在 Test Plan 中设置好添加变量,变量名可以在任意的位置使用,比如说在线程组中直接用${ 变量名 }方式引用,步骤如下: 1)设置变量名和变量值 2)添加线程组 3)添…

记一场vue面试

Vue 修饰符有哪些 事件修饰符 .stop 阻止事件继续传播.prevent 阻止标签默认行为.capture 使用事件捕获模式,即元素自身触发的事件先在此处处理,然后才交由内部元素进行处理.self 只当在 event.target 是当前元素自身时触发处理函数.once 事件将只会触发一次.pass…

AcWing 数据结构

单链表 邻接表用的多 存储树和图 new()速度慢 数组模拟 模板 -1代表头节点 const int N 1e6 5; // head存储链表头 //e[]存储节点的值 //ne[]存储节点的next指针 //idx表示当前用到了哪个节点 int head, e[N], ne[N], idx;// 初始化 void init() {head -1;idx 0; }// 将…

皕杰报表之控件元素

在皕杰报表中,填报操作时,控件类型分为无输入控件、文本框、文本域、下拉框、下拉树、单选框、复选框、日期、时间、日期时间、自定义控件类型。如图所示: 1 无输入控件 选中此控件的单元格在页面生成无任何变化; 2 文本框 选中…

加拿大海运专线怎么选?加拿大海运专线有哪些费用

由于全球经济的发展,近年来,越来越多的国内跨境电商卖家向加拿大和、墨西哥、欧洲、美国等出口货物,而海运的运输方式相对比较划算。那么加拿大海运专线怎么选?又有哪些费用呢?一、加拿大海运专线怎么选 加拿大海运专线运输方式有整柜运输和…

Linux-----网络套接字编程

文章目录铺垫一下概念知识基于UDP协议下的套接字编程基于TCP协议下的套接字编程铺垫一下概念知识 我们知道IP地址是用来标识主机唯一性的。 而源IP地址表示从哪个主机来, 目的IP地址表示去哪个主机。 端口号(port): 1&#xff0…

C++之继承、派生

目录 1.继承的概念与定义 2.层次概念是计算机的重要概念: 3.私有的能被继承,不能被访问 4.继承的三步骤 1.继承语法 2.继承例子 5.有继承和组合的构造顺序---内存布局 6.继承之下的赋值运算符重载 1.基础知识 2.Person、Student例子 7.一个类被多个类继承 …

22.11.18打卡 [传智杯 #3 初赛] 部分题

森林图论懒得写, 等搞完dp之后再来复习图论, 还有一题数据有问题没写 [传智杯 #3 初赛] 课程报名 - 洛谷 哇真的签到, 第一眼还想着推公式呢, 看这数据范围直接暴力了 /* ⣿⣿⣿⣿⣿⣿⡷⣯⢿⣿⣷⣻⢯⣿⡽⣻⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣇⠸⣿⣿⣆⠹⣿⣿⢾⣟⣯⣿⣿…

LiveGBS/LiveNVR组合实现GB35114平台端和GB35114设备端的GB35114的交互流程

概述: GB35114是在GB28181基础上扩展而来,增加了身份认证和数据加密。LiveNVR设备通过GB35114注册到LiveGBS时,LiveGBS平台端需要校验LiveNVR设备的身份,这是单向认证。同时可选LiveNVR也检验LiveGBS平台的身份,如果互…

[Howto] Pytorch Window GPU 环境配置

注: how to 系列只有基本的操作,不涉及原理,类似于操作手册。 Linux,MacOS和Window配置方法差不多,就是环境变量的修改方式不太一样,就不单独说明了。 1. 确定Pytorch版本 估计像我一样的初学者&#xf…

关于commonjs、AMD、UMD、ESM以及ts模块之间的使用差异

commonjs 特点:一个文件就是一个模块,拥有独立的作用域,适用于服务端不适合浏览器端。导出模块内部数据通过module.exports或exports对象默认导出: // true const a 1 const b 2 module.exports {a, b }或者 // true const …

【跨境电商卖家】Instagram营销初学者指南(二):方法与技巧

关键词:跨境电商卖家、instagram营销 1.为 Instagram营销设定目标 在你开始在 Instagram 上发帖之前,问问你自己(或你的团队)一件事:你为什么在 Instagram 上?尽管该平台很受欢迎,但您的回答不…