当前位置: 首页 > news >正文

SpringBoot源码解读与原理分析(一)SpringBoot整体概述

文章目录

  • 第1章 SpringBoot整体概述
    • 1.1 Spring Framework
      • 1.1.1 Spring Framework的历史
      • 1.1.2 IOC与AOP
    • 1.2 Spring Boot与Spring Framework
    • 1.3 Spring Boot的核心特性
    • 1.4 Spring Boot的体系

第1章 SpringBoot整体概述

Spring Framework 开发团队
支持不依赖外部容器的Web应用程序体系结构
2014年 Spring Boot 1.0.0
开发者不必再纠结繁琐的配置、环境的部署等繁琐问题,而只需专注于业务的开发
Spring Boot 不是一个全新的框架,而是基于Spring Framework的“二次封装”

1.1 Spring Framework

一站式企业级Java开发框架

  • IOC Inverse of Control 控制反转
  • AOP Aspect Oriented Programming 面向切面编程
  • 松耦合:对象之间的关系解耦
  • 可配置:外部配置容器及容器中的Bean
  • 一站式:覆盖多领域(JavaWeb、分布式、微服务、Java SE、GUI等)
  • 第三方整合:持久层MyBatis和Hibernate、表现层SpringWebMvc和Struts2、权限校验Spring Security和Shiro

1.1.1 Spring Framework的历史

替代J2EE时期的EJB规范体系

1.1.2 IOC与AOP

IOC 的最直接体现,就是作为Spring Framework的核心容器,这个核心容器又被称为IOC容器,它在内部管理了基于Spring Framework的应用中会用到的所有组件(即Bean)。
可通过模式注解@Component、@Controller等实现组件装配。
使用AOP技术可以通过预编译/运行时动态代理的方式,对目标对象动态添加功能特性(即增强)。
AOP的应用可以使核心业务逻辑与系统级服务(如事务控制、日志审计、权限校验等)分离,从而实现组件功能的“可插拔”。

1.2 Spring Boot与Spring Framework

Spring Boot是开发者与Spring Framework之间的一道中间层,帮助开发者完成部分基于Spring Framework的项目的配置、管理、部署等工作,让开发者专注于业务开发,而不需关注项目环境搭建和配置。
简化基于Spring Framework的项目搭建和应用开发,但不是替代。

1.3 Spring Boot的核心特性

  • 约定大于配置(convention over configuration):对常见场景有约定的默认配置,并自动装配,达到少配置、甚至不配置就能正常启动项目的效果。
  • 场景启动器 starter:整合常用场景,只需引入依赖
  • 自动装配:模块装配+条件装配,动态注册缺少/必要的组件
  • 嵌入式Web容器:嵌入式Web容器,可以直接以一个单体的jar包运行
  • 生产级特性:生产运维型功能特性,如健康检查、监控指标等

1.4 Spring Boot的体系

可整合的技术场景非常多:
SpringWebMvc & SpringWebFlux – Web应用开发
Thymeleaf & Freemarker – Web视图渲染
Spring Security – 安全控制
Spring Data Access – 数据访问(SQL & NoSQL)
Spring Cache – 缓存实现
Spring Message – 消息中间件(JMS & AMQP)
Spring Quartz – 定时任务
Spring Distribution Transaction – 分布式事务(JTA)
Spring Session – 分布式Session
Container Image – 容器镜像构建支持
基于starter场景启动器的整合不需要考虑版本问题,Spring Boot已适配。

······

本节完,更多内容请查阅分类专栏:SpringBoot源码解读与原理分析

相关文章:

SpringBoot源码解读与原理分析(一)SpringBoot整体概述

文章目录 第1章 SpringBoot整体概述1.1 Spring Framework1.1.1 Spring Framework的历史1.1.2 IOC与AOP 1.2 Spring Boot与Spring Framework1.3 Spring Boot的核心特性1.4 Spring Boot的体系 第1章 SpringBoot整体概述 Spring Framework 开发团队 支持不依赖外部容器的Web应用程…...

如何选择VR全景设备,才能拍摄高质量的VR全景?

随着VR全景技术的不断成熟和发展,VR全景已经成为了摄影爱好者乐于尝试的新手段,VR全景也为广大用户提供了一个全新的视角来探索世界,如果想要拍摄出高质量的VR全景,选择合适的VR全景拍摄设备以及掌握正确的拍摄技巧才是关键。 VR全…...

Vue 3 中的 ref 和 reactive 有什么区别?

Vue 3 中的 ref 和 reactive 有什么区别? Vue 3 引入了 Composition API,作为对传统 Options API 的补充。在 Composition API 中,ref 和 reactive 是两个核心的函数,用于创建响应式数据。虽然它们的目标都是使数据变得响应式&am…...

【SpringBoot】mybaitsPlus的多数据源配置

📝个人主页:五敷有你 🔥系列专栏:SpringBoot ⛺️稳重求进,晒太阳 mybatisPlus的多数据源配置 适用于多种场景:纯粹多库、 读写分离、 一主多从、 混合模式等 目前我们就来模拟一个纯粹多…...

安卓Java面试题 1-10

🔥 1、简述Android的4大组件是哪些,它们的作用?🔥 Android的4大组件 1:Activity:Activity是Android程序与用户交互的窗口,是Android构造块中最基本的一种,它需要为保持各界面的状态…...

强化学习中动作价值函数和状态价值函数的联系区别?

在强化学习中,动作价值函数(Q函数)和状态价值函数(V函数)都是值函数,用于评估在不同状态或状态动作对下的值。它们之间存在联系,但有一些区别: 动作价值函数(Q函数&#…...

Vue-Router路由介绍和使用

vue属于单页面应用,路由就是根据浏览器路径不同,用不同的试图组件替换这个页面内容 开启路由功能 如图在创建项目时候勾选rouler 这样创建好的项目就有路由功能 下一步 不同的访问路径 展示不同的页面内容 路由配置 路由连接组件 浏览器会解析为超链接 …...

Waves 14 Complete:后期混音效果全套插件,打造专业级音质体验

Waves 14 Complete,这款专为Mac和Windows平台打造的后期混音效果全套插件,将为您的音乐创作之旅增添一抹亮色。Waves 14 Complete以其丰富的功能和出色的性能,赢得了众多音乐制作人的青睐。它集合了众多高质量的音频处理插件,涵盖…...

DC-2靶机详解

写写自己打DC-2的过程 使用工具 kali DC-2的靶机下载地址为:https://www.vulnhub.com/entry/dc-2,311/ 环境配置。 Kali和DC-2都设置为NAT模式,都为仅主机模式也可以。 信息收集 arp-scan -l nmap -sn 192.168.236.0/24 获取靶机ip:192.16…...

个人项目介绍4:三维园区篇

个人项目介绍: 地图铁路线路篇 地球卫星篇 火车站篇 三维园区篇 项目需求: 1.按比例全景显示三维园区 2.精确显示园区内设备设施 3.实时显示设备报警信息 4.显示园区内摄像监控设备,并可点击显示监控视频流 5.显示园区内的重大危险源和风险分布 …...

哪些公司在招聘GIS开发?为什么?

之前我们给大家整理汇总了WebGIS在招岗位的一些特点,包括行业、学历、工作经验等。WebGIS招聘原来看重这个!整理了1300多份岗位得出来的干货! 很多同学好奇,这些招GIS开发的都是哪些公司?主要是做什么的? …...

电脑自带dll修复在哪里,dll修复工具一键修复dll丢失问题

xinput1_3.dll文件是一个Windows操作系统中的动态链接库(DLL)文件,它是微软DirectX软件开发包的一部分,主要用于支持游戏控制器和其他输入设备的交互。这个文件是DirectInput API的一个组件,DirectInput是DirectX中处理…...

电商数据分析15——电商平台上的产品推荐系统优化策略

目录 写在开头1. 产品推荐系统的作用1.1 提升用户购物体验1.2 增加销售额和转化率 2. 数据分析在推荐系统中的应用2.1 用户行为数据分析2.2 个性化推荐算法优化2.3 多样性和新颖性的平衡 3. 推荐系统优化的实践案例3.1 案例分享:利用机器学习提升推荐准确度3.1.1. 背…...

华硕AMD主板开启TPM2.0支持

目录 配置问题设置开启 Firmware TPM开启 Security Device Support保存设置 检查 配置 主板:TUF Gaming B550m-e Wifi   BIOS: 3402 问题 今天更新Win11,告诉我不支持 TPM 2.0,导致更新失败。   网上搜这个问题,基本只提供了…...

Linux - 进程控制

1、进程创建 1.1、fork函数初识 在linux中fork函数时非常重要的函数&#xff0c;它从已存在进程中创建一个新进程。新进程为子进程&#xff0c;而原进程为父进程&#xff1b; #include <unistd.h> pid_t fork(void); 返回值&#xff1a;自进程中返回0&#xff0c;父进…...

redis一些概念知识

一、redis是什么 Redis是一种非关系型数据库&#xff08;NoSQL&#xff09;&#xff0c;它主要以键值对存储数据。与传统的关系型数据库相比&#xff0c;Redis更注重内存操作和高性能&#xff0c;常被用作缓存系统或分布式存储系统。 以简单的比喻来解释Redis&#xff0c;可以…...

01.AJAX 概念和 axios 使用

01.AJAX 概念和 axios 使用 1. 什么是 AJAX ? 使用浏览器的 XMLHttpRequest 对象 与服务器通信 浏览器网页中&#xff0c;使用 AJAX技术&#xff08;XHR对象&#xff09;发起获取省份列表数据的请求&#xff0c;服务器代码响应准备好的省份列表数据给前端&#xff0c;前端拿…...

外包干了一周,技术明显倒退。。。。。

先说一下自己的情况&#xff0c;本科生&#xff0c;2019年我通过校招踏入了南京一家软件公司&#xff0c;开始了我的职业生涯。那时的我&#xff0c;满怀热血和憧憬&#xff0c;期待着在这个行业中闯出一片天地。然而&#xff0c;随着时间的推移&#xff0c;我发现自己逐渐陷入…...

JSON数据格式,后台@RequestBody实体类接收不到数据-首字母小写,第二个字母大写造成的参数问题

原因&#xff1a; 1.驼峰模式出问题了&#xff0c;当驼峰前只有一个小写字母&#xff0c;然后后面是大写字母&#xff0c;就会出现接收不到数据的情况。 2.只有一个首字母大写的字段也会失效。 比如参数&#xff1a;aTest 那么后端实体定义的aTest接收不到该参数值&#xff…...

MySQL——性能调优

性能调优&#xff08;重要&#xff09; SQL 优化的目的 减少磁盘 IO&#xff1a;尽可能避免全表扫描、尽量使用索引、尽量使用覆盖索引减少回表操作减少 CPU 和内存的消耗&#xff0c;尽可能减少排序、分组、去重之类的操作&#xff0c;尽量减少事务持有锁的时间 优化途径&…...

Python|GIF 解析与构建(5):手搓截屏和帧率控制

目录 Python&#xff5c;GIF 解析与构建&#xff08;5&#xff09;&#xff1a;手搓截屏和帧率控制 一、引言 二、技术实现&#xff1a;手搓截屏模块 2.1 核心原理 2.2 代码解析&#xff1a;ScreenshotData类 2.2.1 截图函数&#xff1a;capture_screen 三、技术实现&…...

地震勘探——干扰波识别、井中地震时距曲线特点

目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波&#xff1a;可以用来解决所提出的地质任务的波&#xff1b;干扰波&#xff1a;所有妨碍辨认、追踪有效波的其他波。 地震勘探中&#xff0c;有效波和干扰波是相对的。例如&#xff0c;在反射波…...

在rocky linux 9.5上在线安装 docker

前面是指南&#xff0c;后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...

mongodb源码分析session执行handleRequest命令find过程

mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程&#xff0c;并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令&#xff0c;把数据流转换成Message&#xff0c;状态转变流程是&#xff1a;State::Created 》 St…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略

本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装&#xff1b;只需暴露 19530&#xff08;gRPC&#xff09;与 9091&#xff08;HTTP/WebUI&#xff09;两个端口&#xff0c;即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

在四层代理中还原真实客户端ngx_stream_realip_module

一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡&#xff08;如 HAProxy、AWS NLB、阿里 SLB&#xff09;发起上游连接时&#xff0c;将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后&#xff0c;ngx_stream_realip_module 从中提取原始信息…...

高危文件识别的常用算法:原理、应用与企业场景

高危文件识别的常用算法&#xff1a;原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件&#xff0c;如包含恶意代码、敏感数据或欺诈内容的文档&#xff0c;在企业协同办公环境中&#xff08;如Teams、Google Workspace&#xff09;尤为重要。结合大模型技术&…...

ios苹果系统,js 滑动屏幕、锚定无效

现象&#xff1a;window.addEventListener监听touch无效&#xff0c;划不动屏幕&#xff0c;但是代码逻辑都有执行到。 scrollIntoView也无效。 原因&#xff1a;这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作&#xff0c;从而会影响…...

Java面试专项一-准备篇

一、企业简历筛选规则 一般企业的简历筛选流程&#xff1a;首先由HR先筛选一部分简历后&#xff0c;在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如&#xff1a;Boss直聘&#xff08;招聘方平台&#xff09; 直接按照条件进行筛选 例如&#xff1a…...

【Go语言基础【13】】函数、闭包、方法

文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数&#xff08;函数作为参数、返回值&#xff09; 三、匿名函数与闭包1. 匿名函数&#xff08;Lambda函…...