Spring框架第一篇(Spring概述与IOC思想)

news2025/9/21 3:16:53

文章目录

  • 一、Spring概述
  • 二、Spring家族
  • 三、Spring Framework
  • 四、IOC思想
  • 五、IOC容器在Spring中的实现

一、Spring概述

Spring 是最受欢迎的企业级 Java 应用程序开发框架,数以百万的来自世界各地的开发人员使用
Spring 框架来创建性能好、易于测试、可重用的代码。
Spring 框架是一个开源的 Java 平台,它最初是由 Rod Johnson 编写的,并且于 2003 年 6 月首
次在 Apache 2.0 许可下发布。
官网:https://spring.io/
在这里插入图片描述
Spring 是轻量级的框架,其基础版本只有 2 MB 左右的大小。
Spring 框架的核心特性是可以用于开发任何 Java 应用程序,但是在 Java EE 平台上构建 web 应
用程序是需要扩展的。 Spring 框架的目标是使 J2EE 开发变得更容易使用,通过启用基于 POJO
编程模型来促进良好的编程实践。

二、Spring家族

从配置到安全性,从 Web 应用程序到大数据,无论您的应用程序需要什么基础架构,都有一个 Spring Project 可以帮助您构建它。从小处着手,只使用您需要的东西——Spring 在设计上是模块化的。
项目列表:https://spring.io/projects
在这里插入图片描述

三、Spring Framework

Spring 基础框架,可以视为 Spring 基础设施,基本上任何其他 Spring 项目都是以 Spring Framework为基础的。

Spring Framework特性
1,非侵入式:使用 Spring Framework 开发应用程序时,Spring 对应用程序本身的结构影响非常
小。对领域模型可以做到零污染;对功能性组件也只需要使用几个简单的注解进行标记,完全不会
破坏原有结构,反而能将组件结构进一步简化。这就使得基于 Spring Framework 开发应用程序
时结构清晰、简洁优雅。
2,控制反转:IOC——Inversion of Control,翻转资源获取方向。把自己创建资源、向环境索取资源
变成环境将资源准备好,我们享受资源注入。
3,面向切面编程:AOP——Aspect Oriented Programming,在不修改源代码的基础上增强代码功
能。
4,容器:Spring IOC 是一个容器,因为它包含并且管理组件对象的生命周期。组件享受到了容器化
的管理,替程序员屏蔽了组件创建过程中的大量细节,极大的降低了使用门槛,大幅度提高了开发
效率。
5,组件化:Spring 实现了使用简单的组件配置组合成一个复杂的应用。在 Spring 中可以使用 XML
和 Java 注解组合这些对象。这使得我们可以基于一个个功能明确、边界清晰的组件有条不紊的搭
建超大型复杂应用系统。
6,声明式:很多以前需要编写代码才能实现的功能,现在只需要声明需求即可由框架代为实现。
7,一站式:在 IOC 和 AOP 的基础上可以整合各种企业应用的开源框架和优秀的第三方类库。而且
Spring 旗下的项目已经覆盖了广泛领域,很多方面的功能性需求可以在 Spring Framework 的基
础上全部使用 Spring 来实现。

Spring Framework五大功能模块
在这里插入图片描述

四、IOC思想

IOC:Inversion of Control,翻译过来是反转控制。
①获取资源的传统方式
自己做饭:买菜、洗菜、择菜、改刀、炒菜,全过程参与,费时费力,必须清楚了解资源创建整个过程
中的全部细节且熟练掌握。
在应用程序中的组件需要获取资源时,传统的方式是组件主动的从容器中获取所需要的资源,在这样的
模式下开发人员往往需要知道在具体容器中特定资源的获取方式,增加了学习成本,同时降低了开发效
率。
②反转控制方式获取资源
点外卖:下单、等、吃,省时省力,不必关心资源创建过程的所有细节。
反转控制的思想完全颠覆了应用程序组件获取资源的传统方式:反转了资源的获取方向——改由容器主
动的将资源推送给需要的组件,开发人员不需要知道容器是如何创建资源对象的,只需要提供接收资源
的方式即可,极大的降低了学习成本,提高了开发的效率。这种行为也称为查找的被动形式。
③DI
DI:Dependency Injection,翻译过来是依赖注入。
DI 是 IOC 的另一种表述方式:即组件以一些预先定义好的方式(例如:setter 方法)接受来自于容器
的资源注入。相对于IOC而言,这种表述更直接。
所以结论是:IOC 就是一种反转控制的思想, 而 DI 是对 IOC 的一种具体实现。

五、IOC容器在Spring中的实现

Spring 的 IOC 容器就是 IOC 思想的一个落地的产品实现。IOC 容器中管理的组件也叫做 bean。在创建
bean 之前,首先需要创建 IOC 容器。Spring 提供了 IOC 容器的两种实现方式:
①BeanFactory
这是 IOC 容器的基本实现,是 Spring 内部使用的接口。面向 Spring 本身,不提供给开发人员使用。
②ApplicationContext
BeanFactory 的子接口,提供了更多高级特性。面向 Spring 的使用者,几乎所有场合都使用
ApplicationContext 而不是底层的 BeanFactory。
③ApplicationContext的主要实现类
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

分类预测 | Matlab实现RIME-LSSVM霜冰算法优化最小二乘支持向量机数据分类预测

分类预测 | Matlab实现RIME-LSSVM霜冰算法优化最小二乘支持向量机数据分类预测 目录 分类预测 | Matlab实现RIME-LSSVM霜冰算法优化最小二乘支持向量机数据分类预测分类效果基本介绍程序设计参考资料 分类效果 基本介绍 1.Matlab实现RIME-LSSVM霜冰算法优化最小二乘支持向量机数…

SpringBoot 日志系统解析

日志实现框架 常见框架: JULLogbacLog4jLog4j2 日志实现的抽象层 避免代码的改动影响用户的使用, 常见的: JCLSLF4J 日志发展历程 JDK1.3及以前, 通过System.(out | err).println打印, 存在巨大缺陷解决系统打印缺陷问题出现log4,2015年8月停止更新受到log4j影响, SUN公…

Windows版Apache5.7解压直用(免安装-绿色-项目打包直接使用)

windows下Apache分类 Apache分为 安装版和解压版 安装版: 安装方便,下一步------下一步就OK了,但重装系统更换环境又要重新来一遍,会特别麻烦 解压版(推荐): 这种方式(项目打包特别方便&#…

MQ概览及Kafka详解

文章目录 概览MQ优点MQ缺点常见MQ对比JMS消息模型点对点模式发布订阅模式 kafka基础架构发布订阅工作流程生产者生产者文件存储生产者分区策略生产者数据可靠性保证生产者数据一致性保证生产者ack机制ExactlyOnce生产者发送消息流程 消费者消费者分区分配策略消费者消费数据问题…

JS sort方法踩坑

JavaScript的sort()方法在默认情况下将数组元素视为字符串进行排序,而不是按照数字的大小。因此,对于包含数字的数组,sort()方法会按照字符串的排序规则进行排序。 例如,对于[2, 11]这个数组,按照字符串的排序规则&…

谈谈我的软考高级考证之路(系统架构设计师篇)

系统架构设计师备考资料请移步 2023年软考高级系统架构设计师视频教程,推荐下载!获取。 备考总体策略 • 总体策略:刷视频记笔记刷真题 • 备考时间:建议报完名之后,开始备考,大致2-3个月(基础…

ADC的认识

ADC介绍 Q:ADC是什么? A:全称:Analog-to-Digital Converter,指模拟/数字转换器 ADC的性能指标 量程:能测量的电压范围分辨率:ADC能辨别的最小模拟量,通常以输出二进制数的位数表示&#xf…

论文笔记:LayoutNUWA: Revealing the Hidden Layout Expertise of Large Language Models

iclr 2024 reviewer 评分 568 图形布局生成大模型 1 intro 现有方法主要将布局生成视为一个数值优化任务,专注于量化方面,同时忽略了布局的语义信息,如各布局元素之间的关系。论文提出了LayoutNUWA,这是第一个将布局生成视为代…

【GD32】 MQ-135空气质量传感器

2.37 MQ-135空气质量传感器 MQ135 气体传感器所使用的气敏材料是在清洁空气中电导率较低的二 氧化锡(SnO2)。当传感器所处环境中存在污染气体时,传感器的电导率随空 气中污染气体浓度的增加而增大。MQ135 气体传感器对氨气、硫化物、苯系 蒸汽的灵敏度高&#xff0…

【大语言模型】应用:10分钟实现搜索引擎

本文利用20Newsgroup这个数据集作为Corpus(语料库),用户可以通过搜索关键字来进行查询关联度最高的News,实现对文本的搜索引擎: 1. 导入数据集 from sklearn.datasets import fetch_20newsgroupsnewsgroups fetch_20newsgroups()print(fNu…

朵米3.5客服系统源码2023正式版(带详细安装教程)

朵米客服系统是一款全功能的客户服务解决方案,提供多渠道支持(如在线聊天、邮件、电话等),帮助企业建立与客户的实时互动。该系统具有智能分流功能,可以快速将客户请求分配给适当的客服人员,提高工作效率。…

(待更)DRF:限流(单视图或全局设置限流方案)

建议先看完本人的另两篇博客:认证(http://t.csdnimg.cn/G4idK)和权限(http://t.csdnimg.cn/0hpJf),或者了解认证和权限,有一定基础,再来看本篇博客。 基本原理 开发过程中如果某个接…

测试计划和测试报告

1、软件测试计划简介 测试计划,一般是主管写,在需求分析之后,测试工作开始之间做的一些准备划工作。一般包含以下内容:5W1H 目的、测试范围、测试进度安排、测试人员、测试环境、测试方法工具,风险评估 (w…

在Linux上利用mingw-w64生成exe文件

一、概要 1、elf与exe 在Linux上用gcc直接编译出来的可执行文件是elf格式的,在Windows上是不能运行的 Windows上可执行文件的格式是exe 利用mingw-w64可以在Linux上生成exe格式的可执行文件,将该exe文件拷贝到Windows上就可以运行 2、程序要留给用户…

C语言学习笔记之结构体(一)

目录 什么是结构体? 结构体的声明 结构体变量的定义和初始化 结构体成员的访问 结构体传参 什么是结构体? 在现实生活中的很多事物无法用单一类型的变量就能描述清楚,如:描述一个学生,需要姓名,年龄&a…

从 iPhone 上的短信中恢复已删除的图片的可靠方法

您可能在浏览消息聊天时不小心删除了一些文本和照片。事实上,如果这些消息对你来说意义重大,那对你来说可能会很麻烦。当发生意外情况时,您可能不想恢复整个聊天,而是恢复其中的附件。 好了,这篇文章主要是讲如何灵活…

LLM大语言模型微调方法和技术汇总

本文详细介绍了机器学习中的微调技术,特别是在预训练模型上进行微调的方法和技术。文章首先解释了什么是微调,即在预训练模型的基础上,通过特定任务的数据进行有监督训练,以提高模型在该任务上的性能。随后,详细介绍了…

ubuntu 安装java

在Ubuntu上安装Java通常有两种方式:使用包管理器安装默认仓库中的Java或者手动安装Oracle JDK。 使用APT包管理器安装: sudo apt update sudo apt install default-jdk 手动安装Oracle JDK: 首先,你需要从Oracle官网下载JDK的…

AI Agent概念、能力初探

AI Agent无疑是大语言模型当前最热门且最具前景的方向,也是通往AGI的必经之路,下面我们从基本概念和系统能力层面来逐步揭开AI Agent的神秘面纱。 一、概念解析 1、什么是AI Agent? AI Agent(人工智能代理)是一种能够…

(N-149)基于微信小程序网上商城系统

开发工具:IDEA、微信小程序 服务器:Tomcat9.0, jdk1.8 项目构建:maven 数据库:mysql5.7 前端技术:vue、uniapp 服务端技术:springbootmybatisredis 本系统分微信小程序和管理后台两部分&a…