关于 Spring :松耦合、可配置、IOC、AOP
关于 Spring :松耦合、可配置、IOC、AOP
文章目录
- 关于 Spring :松耦合、可配置、IOC、AOP
- 一、关于 Spring
- 1、概述
- 2、Spring 的“松耦合”体现在哪
- 3、Spring 的“可配置”体现在哪
- 4、Spring 的 IOC 容器的主要作用
- 5、Spring 的 AOP 容器的主要作用
一、关于 Spring
1、概述
SpringFramework 是一个开源的、松耦合的、分层的、可配置的一站式企业级 Java 开发框架,它的核心是 IOC 与 AOP ,它可以更容易的构建出企业级 Java 应用,并且它可以根据应用开发的组件需要,整合对应的技术。
2、Spring 的“松耦合”体现在哪
- 依赖注入(DI): Spring 使用依赖注入来实现组件之间的解耦。通过依赖注入,对象的依赖关系由容器动态地注入,而不是在对象内部硬编码。这样,对象可以更灵活、更容易替换,而不会影响其他部分的代码。
- 接口和抽象: Spring 鼓励使用接口和抽象类来定义组件,而不是直接使用具体的实现类。这样做可以使组件更容易替换,而不影响其他部分的代码。Spring 提供了接口和抽象的实现,使得开发者可以通过配置选择使用哪个实现。
- AOP(面向切面编程): Spring 的 AOP 功能允许开发者通过切面将横切关注点(如日志、事务管理)从业务逻辑中分离出来。这样,业务逻辑与横切关注点之间的关系变得松散,业务逻辑可以专注于核心功能,而不受非业务相关的干扰。
- 松散耦合的设计理念: Spring 框架本身设计时考虑了松耦合的原则,通过接口、抽象以及适当的设计模式来实现。这种设计理念使得 Spring 框架本身的模块之间相对独立,可以单独使用,也可以根据需要进行组合。
3、Spring 的“可配置”体现在哪
- XML配置文件: Spring 可以通过 XML 文件配置各种组件,包括 **Bean 定义、依赖注入、AOP(面向切面编程)**等。这使得应用的配置可以轻松地更改而无需修改源代码。
- 注解配置: 除了 XML 配置外,Spring 还支持使用注解进行配置。通过在代码中添加注解,可以实现与 XML 配置相同的效果。这提供了一种更简洁和方便的配置方式。
- 属性文件: Spring 允许将配置信息放在外部属性文件中,从而使得可以在不同环境中轻松切换配置。这提高了灵活性,使得相同的应用可以在不同环境中运行而无需修改代码。
- 条件化配置: Spring 支持条件化配置,允许根据特定条件选择是否启用某些组件或配置。这样可以根据环境或其他条件来动态配置应用。
- Profile: 使用 Spring 的 Profile 功能,可以为不同的环境创建不同的配置文件,然后根据需要激活相应的配置文件。这使得应用可以在不同的环境中以不同的方式运行。
4、Spring 的 IOC 容器的主要作用
Spring 的 IOC(Inversion of Control)容器的主要作用是管理和控制应用中的组件(对象)的生命周期和依赖关系。IOC 容器通过反转应用的控制权,将对象的创建、组装和管理交由容器负责,而不是由应用代码直接控制。
主要作用包括:
- 对象的创建和管理: IOC 容器负责创建和管理应用中的对象。开发者只需要配置对象的相关信息,容器负责根据配置信息实例化对象,并在需要的时候进行销毁。
- 依赖注入: IOC 容器通过**依赖注入(DI)**实现对象之间的解耦。容器负责将对象之间的依赖关系注入到对象中,而不是由对象自己硬编码获取依赖。这样可以提高代码的灵活性和可维护性。
- 配置管理: IOC 容器通过配置文件(如XML、注解)来管理对象的配置信息。这包括对象的属性、依赖关系、初始化方法、销毁方法等。通过配置,开发者可以灵活地调整应用的结构和行为,而无需修改源代码。
- 生命周期管理: IOC 容器负责管理对象的生命周期,包括对象的创建、初始化、使用和销毁。开发者可以通过配置来定义对象的初始化和销毁方法,确保在合适的时机执行相应的操作。
- 单例管理: IOC 容器可以管理单例对象,确保在应用中只存在一个实例。这有助于节省资源,并确保对象的一致性。
5、Spring 的 AOP 容器的主要作用
- 横切关注点的模块化: AOP 容器允许将横切关注点(cross-cutting concerns)从应用的主要业务逻辑中分离出来,以模块化的方式进行管理。横切关注点通常包括日志记录、事务管理、安全性等,通过 AOP 可以将这些关注点独立开发和维护。
- 代码重用: AOP 允许开发者将一些通用的横切关注点定义为切面(aspect),然后在应用中引用这些切面,实现代码的重用。这样,相同的横切关注点不需要在每个业务逻辑中都重复编写。
- 解耦: AOP 可以实现横切关注点与主要业务逻辑之间的解耦,提高代码的模块化和可维护性。业务逻辑可以专注于核心功能,而不受横切关注点的干扰。
- 事务管理: AOP 在 Spring 中常被用于实现事务管理。通过将事务相关的代码抽象为切面,可以在需要时自动处理事务的开始、提交或回滚,而无需业务逻辑显式处理这些事务细节。
- 日志记录: AOP 可以用于实现日志记录,将日志的记录逻辑从业务逻辑中抽离出来,使得代码更清晰,易于维护。
相关文章:
关于 Spring :松耦合、可配置、IOC、AOP
关于 Spring :松耦合、可配置、IOC、AOP 文章目录 关于 Spring :松耦合、可配置、IOC、AOP一、关于 Spring1、概述2、Spring 的“松耦合”体现在哪3、Spring 的“可配置”体现在哪4、Spring 的 IOC 容器的主要作用5、Spring 的 AOP 容器的主要作用 一、关…...
pytorch tensor数据类型转换为python数据
一、item() input: x torch.tensor([1.0]) x.item()output: 1.0二、tolist() input: a torch.randn(2, 2) a.tolist() a[0,0].tolist()output: [[0.012766935862600803, 0.5415473580360413],[-0.08909505605697632, 0.7729271650314331]]0.012766935862600803...
HarmonyOS开发:动态共享包的依赖问题
一、共享包的依赖方式 在需要依赖的模块包目录下oh-package.json5文件中添加依赖: "dependencies": {"ohos/srpaasUI": "file:../../srpaasUI","ohos/srbusiness": "file:../../feature/srbusiness"} 引入之后…...
中睿天下加入中关村华安关键信息基础设施安全保护联盟
近日,中睿天下正式加入中关村华安关键信息基础设施安全保护联盟,成为其会员单位。 中关村华安关键信息基础设施安全保护联盟是由北京市科学技术委员会、中关村科技园区管理委员会指导支持,经北京市民政局批准,于2023年8月正式注册…...
【c++STL算数仿函数,关系仿函数,逻辑仿函数】
文章目录 C STL中的算数、关系和逻辑仿函数1. 算数仿函数2. 关系仿函数3. 逻辑仿函数 C STL中的算数、关系和逻辑仿函数 STL(Standard Template Library)是C标准库的一部分,提供了许多强大的工具和功能,其中包括仿函数࿰…...
产品经理的能力模型是什么?
一个产品的成功需要团队成员利用自己的技能共同合作完成。作为团队的核心和产品的主导者,产品经理需要具备一定的能力模型,以更好地完成工作。下面从五个方面进行解答。 首先,产品经理需要具备需求分析的能力。需求是用户在特定场景下产生的欲…...
缓存和DB一致性
读操作,一般是先查询缓存,查询不到再查询数据库,最后回写进缓存。 写操作,究竟是先删除(更新)缓存,再更新数据库,还是先更新数据库,再删除(更新)缓存呢? 1、给缓存设置过期时间 适用…...
netty websockt之断连重试
断连重试有以下两点考虑: 1、连接异常,比如网络抖动导致连接失败; 2、连接过程中断开连接重试; 主要用到两个工具类: ChannelFutureListener监听ChannelFuture..isSuccess(); ChannelInboundHandlerAd…...
【Gateway】基于ruoyi-cloud-plus项目,gateway局部过滤器和过滤返回以及集成nacos
1.使用Gateway路由转发 1.1标题引入依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency>1.2添加YML配置 spring:cloud:gateway:# 打印请求日志(自定义)…...
mysql -mmm
MMM(Master-Master replication manager for MvSQL,MySQL主主复制管理器) 是一套支持双主故障切换和双主日常管理的脚本程序。MMM 使用 Perl 语言开发,主要用来监控和管理 MySQL Master-Master (双主)复制&…...
C++初阶 类和对象(下)
目录 一、拷贝构造函数 1.1 什么是拷贝构造函数? 1.2 为什么得是引用? 1.3 使用拷贝构造函数 1.4 拷贝构造函数有什么用? 二、运算符重载 2.1 什么是运算符重载? 2.2 尝试前须知 2.3 常见运算符重载 2.3.1运算符重载 …...
使用Postman进行压力测试
1.打开Postman新建测试接口 2.点击右边保存,选择一个文件集合,如果没有就创建,然后保存 就是这个东西,这里不便展示出来,压力测试需要在文件夹里面进行 3.选择要测试的接口,iterations 表示请求发起次数&a…...
AI视频检索丨历史视频标签化,助力重要事件高效溯源
随着科技的不断发展,安全监控已成为我们生活中不可或缺的一部分。当发生盗窃、人员走失、安全事故等重要事件时,常常需要通过查看视频回放了解事情经过,为解决问题提供证据或指明查找方向。但是,人工查看视频回放往往费时费力&…...
【前段基础入门之】=>CSS3新特性 响应式布局
文章目录 概念媒体查询媒体类型媒体特性媒体运算符 概念 所谓对响应式布局方案的理解,众说纷纭,核心点就是同一套代码在不同尺度屏幕下的布局呈现方式的不同 社区中有很多人分享,并列出了多种实现响应式布局的方案,比如【 rem&…...
【Java 进阶篇】JQuery 遍历:发现元素的魔法之旅
欢迎来到 JQuery 的奇妙世界,一个充满活力和灵感的地方。在这个世界里,我们将一起探讨 JQuery 的遍历功能,这是一个让你轻松发现和操作网页元素的神奇工具。无需太多前端经验,只要有一颗探险的心,你就能在 JQuery 遍历…...
合肥数字孪生赋能工业制造,加速推进制造业数字化转型
聚焦国家战略需求和先进制造业发展方向,加快数字化发展战略部署,数字孪生、工业互联网、工业物联网已被广泛认为是工业革命的新引擎。合肥数字孪生正在推动工业制造从制造转向智造。通过数字化建模和仿真的方式,优化设计、生产、质量管理、供…...
Linux发展史与环境安装
Linux发展史与环境安装 一、Linux发展史推动技术进步的基本模式理解操作系统的发展理解Linux操作系统的发展 一、Linux的环境安装 一、Linux发展史 Linux和window XX其实都是一样的,定位:操作系统,企业内部,要给用户提供“互联网…...
【uniapp】 video视频层级、遮挡其他弹窗或顶部导航 使用nvue覆盖
uniapp 顶部导航和弹窗被video遮挡解决办法 第一步:配置 subNVues {"path": "pages/index/index","style": {"navigationBarTitleText": "uni-app","navigationStyle": "custom","app-…...
opencv(1):创建和显示窗口, 读取保存图片
下载源码,方便查看 API 信息。 快速在源码文件夹中搜索相关 api. grep“namedWindow(*-Rn// 限定 .h 文件 grep“namedWindow(*-Rn|grep "\.h" vscode 语法检测有问题 一直有波浪线 打开 vscode, setting 界面,搜索 python 在 setting.json…...
LeetCode530. Minimum Absolute Difference in BST
文章目录 一、题目二、题解 一、题目 Given the root of a Binary Search Tree (BST), return the minimum absolute difference between the values of any two different nodes in the tree. Example 1: Input: root [4,2,6,1,3] Output: 1 Example 2: Input: root [1,…...
基于Uniapp开发HarmonyOS 5.0旅游应用技术实践
一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架,支持"一次开发,多端部署",可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务,为旅游应用带来…...
Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器
第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...
C++ 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
JDK 17 新特性
#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持,不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的ÿ…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
Device Mapper 机制
Device Mapper 机制详解 Device Mapper(简称 DM)是 Linux 内核中的一套通用块设备映射框架,为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程,并配以详细的…...
鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南
1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发,使用DevEco Studio作为开发工具,采用Java语言实现,包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...
Springboot社区养老保险系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,社区养老保险系统小程序被用户普遍使用,为方…...
2025季度云服务器排行榜
在全球云服务器市场,各厂商的排名和地位并非一成不变,而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势,对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析: 一、全球“三巨头”…...
Selenium常用函数介绍
目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...
