Spring基础——Spring简介

news2025/2/28 10:17:50

目录

  • Spring简述
    • Spring起源
    • Spring技术核心
      • 1. Spring IoC
      • 2. Spring AOP
      • 3. Spring Framework
      • 4. Spring Boot
    • Spring涉及领域

Spring简述

如果想快速上手spring开发的话这边先给出spring的官方文档
官方教程:spring.io guides
中文教程(官方镜像):6.x版本Spring 中文网
快速搭建SpringBoot环境链接(Spring公司认为jdk17以上的版本是未来发展的方向,因此官网提供的快速搭建已经不支持jdk17以下的开发环境

Spring起源

  • Spring框架可追溯到2002年,当时由Spring之父Rod Johnson撰写了一本《Expert One-on-One J2EE Design and Development》的书,此书介绍了一些关于简化企业级开发设计项目的实践以及设计模式,打破了传统Java开发的思维模式,在这之后Rod Johnson推翻了自己的理论,并提出了一个新的设计框架Spring。
  • 在官方文档的叙述中,Spring是为简化J2EE开发从传统的J2EE中精心挑选个别规范进行整合,是对J2EE的补充。
  • 如今的Spring6.0以及之后的框架已经不在支持传统的javax包,转为Jakarta EE 9规范(Servlet 5.0+ JPA3.0+)和Tomcat 10.1,Jetty 11与Undertow 2.3 web服务器,Hibernate ORM 6.1兼容

Spring技术核心

最关键的技术核心就两个IoC与AOP,至于有多关键,官方文档里是着重强调的那种关键。
core_technology

1. Spring IoC

  • IoC又称控制反转Inversion of Control:对象仅通过构造参数、工厂方法的参数或在对象实例被构造或从工厂方法返回后在其上设置的属性来定义其依赖关系(即它们与之合作的其他对象)。然后容器在创建 bean 时注入这些依赖关系。这个过程从根本上说是Bean本身通过使用直接构建类或诸如服务定位模式的机制来控制其依赖关系的实例化或位置的逆过程(因此被称为控制反转)。

这里简单点说是分为两部分。

  • 1.1 Spring Container关联对象特定创建的方式上设置的属性,为其定义依赖关系。
  • 1.2 在Spring Container创建bean(这里只要是由Spring生产的对象统称为bean)的时候注入依赖关系,换句话说就是不需要你自己在对已经注入Spring Container的类new对象了,全权交由Spring容器。

如果看不懂的话可以先去学习用法,在实践中体会这种抽象概念。

2. Spring AOP

  • aop-面相切面编程
  • 面向切面的编程(AOP)通过提供另一种思考程序结构的方式来补充面向对象的编程(OOP)。OOP中模块化的关键单位是类,而AOP中模块化的单位是切面。切面使跨越多种类型和对象的关注点(如事务管理)模块化。(这样的关注点在AOP文献中通常被称为 “交叉(crosscutting)” 关注点)。
  • Spring框架的核心原则之一是非侵入性,Spring AOP的功能是在不改动每个模块|切面的代码基础上能额外增加新的功能。
  • Spring AOP默认使用标准的JDK动态代理进行AOP代理,因此基本上任意接口都可以被aop代理。

3. Spring Framework

  • Spring的底层架构,是Spring框架的核心,其中就包含了上面IoC与AOP的核心技术,此外,它还提供了对事务管理、对象/关系映射、JavaBeans、JDBC、JMS 和其他技术的支持,从而确保高效开发。
    spring_framework

  • Spring Framework官方介绍文档

  • 目前Spring Framwork的最新发行版本为6.1.4,但因为不支持jdk17以下的版本,目前国内大多还是停留在jdk8(长期维护的jdk版本目前就8,11,17,21,其中jdk8是维护到2030年,11是2026年,17是2029,21是2031)因此大多依然是用5.x版本的Spring进行开发,目前最后一版的5.3.x版本官方Commercial support到2026年年底。
    spring_support

4. Spring Boot

  • Spring Boot是由Pivotal团队提供的一套开源框架,可以简化spring应用的创建及部署。它提供了丰富的Spring模块化支持,可以帮助开发者更轻松快捷地构建出企业级应用。Spring Boot通过自动配置功能,降低了复杂性,同时支持基于JVM的多种开源框架,可以缩短开发时间,使开发更加简单和高效。

Spring涉及领域

  • Spring最初是以Spring Framework起家,在J2EE开发中大展身手,随着软硬件技术的发展,如今Spring也在对不断变化的市场需求做出积极的响应与更新,从技术广度上来说Spring基本上整合了绝大部分当今主流的开发框架,从技术深度上来说Spring同时也有非常庞大的开发社区,非常多的学习文档,从web底层到微服务,云计算,基本上全部包含在内。
    spring_do

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

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

相关文章

代码随想录算法训练营day29

题目:491_非递减子序列(看了题解) 给定一个整型数组, 你的任务是找到所有该数组的递增子序列,递增子序列的长度至少是2。 示例: 输入: [4, 6, 7, 7]输出: [[4, 6], [4, 7], [4, 6, 7], [4, 6, 7, 7], [6, 7], [6, 7, 7], [7,7]…

uniAPP书写,外卖生鲜小程序,源码交付,支持二开!多级分销,创痛无阻!

做餐饮微信分销系统的好处? 分销可以为商家迅速构建一个微信商城,商家通过分销能够快速打开自己的销售渠道,建立一个自己的网上商城系统,帮助商家去更好地进行商品的售卖。通过分销能够快速完成店铺的装修,完成商品的上…

Mysql的储存引擎

储存引擎介绍 1. 文件系统 操作系统存取数据的一种机制 2. 文件系统类型 不管使用什么文件系统,数据内容不会变化 不同的是,存储空间、大小、速度 3. MySQL存储引擎 可以理解为,MySQL的“文件系统”,只不过功能更加强大 4. MySQL…

SMTP地址如何获得?SMTP服务器地址是什么?

SMTP服务器地址怎么看?获取SMTP服务器地址的方法? 当我们需要发送邮件时,SMTP地址则成为了连接邮件服务器的重要桥梁。那么,SMTP地址究竟是什么呢?我们又该如何获得它呢?接下来,让蜂邮EDM来探讨…

三维基因组|基因组结构 (2)

本系列将更新三维基因组相关内容,欢迎关注! 二维顺式元件 术语 cis 源自拉丁语词根“cis”,意思是“同一侧”。相比之下,“trans”一词来自拉丁语词根“trans”,意思是“对面”。在分子生物学中,顺式调控元…

从全国首款到全球首款,康华生物凭“创新+出海”领跑国产疫苗赛道

2024年,是国内首个上市销售的人二倍体细胞狂犬病疫苗上市销售的第十周年,也是成都本土企业康华生物成立的第二十个周年。 值此20周年之际,康华生物于2月27日在成都举办“疫苗创新与疾病预防”论坛,遍邀来自研发界、疾控界等各类专…

SINAMICS V90 指导手册 第3章 驱动和电机安装

驱动安装 安装方向和间距 方向: SINAMICS V90 200V系列中,400W和700W型号的驱动器可同时支持垂直以及水平安装,其他型号的驱动仅支持垂直安装。 间距: 安装间距 注意:当满足下列任一条件时,驱动应降额至…

安卓使用okhttpfinal下载文件,附带线程池下载使用

1.导入okhttp包 implementation cn.finalteam:okhttpfinal:2.0.7 2.单个下载 package com.example.downloading;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle; import android.util.Log; import android.view.View;import java.io.File;import c…

前端配置开发环境,新电脑配置前端开发环境,Vue开发环境配置的详细过程(前端开发环境配置,电脑重置后配置前端开发环境)

简介:有时候,我们需要在新电脑 或者 电脑重置后,配置前端开发环境,具体都需要安装什么软件和插件,这里来记录一下(文章适合新手和小白,大佬可以带过)。 ✨前端开发环境,需…

向量数据库PGVECTOR,AI浪潮下崛起的新秀!

📢📢📢📣📣📣 哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】!😜&am…

mybatis的原理和注解开发,今年Java面试必问的这些技术面

前言 说起MySQL优化的话,想必大部分人都不陌生了。在我们的记忆储备里也早已记住了这些关键词:避免使用SELECT*、避免使用NULL值的判断、根据需求适当的建立索引、优化MySQL参数…但是你对于这些优化技巧是否真正的掌握了及其相应的工作原理是否吃透了呢…

RabbitMQ-消息队列:Federation Exchange、Federation Queue、Shovel

25、Federation Exchange 1、使用它的原因 ​ (broker 北京),(broker 深圳)彼此之间相距甚远,网络延迟是一个不得不面对的问题。有一个在北京 的业务(Client 北京) 需要连接(broker 北京),向其中的交换器 exchangeA 发送消息,此…

思科湾区开启新一轮裁员,730职位受到影响 | 百能云芯

近日,科技巨头思科(Cisco)宣布将进行一轮裁员,作为其裁员计划的一部分,湾区将有大约730个工作岗位受到影响。 根据提交给州和地方官员的监管文件,受影响的工作岗位主要分布在湾区不同地点,其中圣…

QT多语言切换功能

一.目的 在做项目时,有时希望我们的程序可以在不同的国家使用,这样最好的方式是一套程序能适应于多国语言。 Qt提供了这样的功能,使得一套程序可以呈现出不同的语言界面。本文将介绍QT如何实现多语言,以中文和英文为例。 QT开发…

YOLOv8改进涨点,添加GSConv+Slim Neck,有效提升目标检测效果,代码改进(超详细)

目录 摘要 主要想法 GSConv GSConv代码实现 slim-neck slim-neck代码实现 yaml文件 完整代码分享 总结 摘要 目标检测是计算机视觉中重要的下游任务。对于车载边缘计算平台来说,巨大的模型很难达到实时检测的要求。而且,由大量深度可分离卷积层构…

Leetcode121. 买卖股票的最佳时机 -代码随想录

题目&#xff1a; 代码(首刷自解 2024年2月29日&#xff09;&#xff1a; 一个easy题做那么久&#xff0c;自我检讨一下 class Solution { public:int maxProfit(vector<int>& prices) {int n prices.size();if (n 1) return 0;vector<int> dp(n 1, 0);int…

Redis 在 Linux 系统下安装部署的两种方式详细说明

小伙伴们好&#xff0c;欢迎关注&#xff0c;一起学习&#xff0c;无限进步 Redis安装和配置 1、首先在官网下载好redis-6.0.9.tar.gzhttp://redis.io/ 或者使用 wget 命令下载&#xff1a;wget http://download.redis.io/releases/redis-6.0.9.tar.gz 2、下载使用上传到阿里…

《Spring Security 简易速速上手小册》第1章 Spring Security 概述(2024 最新版)

文章目录 1.1 Spring Security 的重要性1.1.1 基础知识详解1.1.2 主要案例&#xff1a;用户认证与授权1.1.3 拓展案例 1&#xff1a;OAuth2 社交登录1.1.4 拓展案例 2&#xff1a;JWT 认证 1.2 Spring Security 的核心特性1.2.1 基础知识详解1.2.2 主要案例&#xff1a;基于角色…

疑似某免杀测试样本被国外安全团队捕获

今天笔者发现国外MalwareHunterTeam捕获到一例特殊的样本&#xff0c;如下所示&#xff1a; 服务器的IP地址为:117.50.106.161&#xff0c;同时样本的PDB信息&#xff0c;如下所示&#xff1a; 样本的PDB信息&#xff1a;C:\Users\Xiaowu\source\repos\bypass-1\Release\bypass…

2.1_6 线程的实现方式和多线程模型

文章目录 2.1_6 线程的实现方式和多线程模型&#xff08;一&#xff09;线程的实现方式&#xff08;1&#xff09;用户级线程&#xff08;2&#xff09;内核级线程 &#xff08;二&#xff09;多线程模型&#xff08;1&#xff09;一对一模型&#xff08;2&#xff09;多对一模…