【Spring Boot】有这一文就够了

news2024/11/27 15:44:46

作者简介

前言

作者之前写过一个Spring Boot的系列,包含自动装配原理、MVC、安全、监控、集成数据库、集成Redis、日志、定时任务、异步任务等内容,本文将会一文拉通来总结这所有内容,不骗人,一文快速入门Spring Boot。

专栏地址:

https://blog.csdn.net/joker_zjn/category_12439661.html?spm=1001.2014.3001.5482

目录

1.自动装配原理

2.MVC

3.安全

4.监控

5.集成数据库

6.集成Redis

7.日志

8.定时任务、异步消息、异步任务

9.如何查看Spring Boot各版本的变化


1.自动装配原理

文章链接:

Spring Boot自动装配原理详解_springboot自动装配原理__BugMan的博客-CSDN博客

正如我们所知道的Spring Boot是一个“开箱即食”的框架,其封装了Spring框架,简化了Spring应用程序的开发和部署过程。 Spring Boot之所以开箱即食,是因为其底层的“自动装配”机制会根据应用程序的依赖和需要自动配置Spring应用程序的各种组件,而无需手动编写大量的配置代码。

关于Spring Boot的自动装配,网上的文章车载斗量,但大多思路都不是很清晰,动不动就直接开始将先调这个方法然后调那个方法,其实整个Spring Boot的自动装配一共就分为两大步:

  1. 自动装载
  2. 自动配置

1.自动装载

自动装载,将所有需要的资源(类和配置文件等)加载进来。既然需要自动将一些东西装入IOC,自然就要有一张清单来记录一下,这样才能照方抓药。Spring Boot中会存在着这样一张需要加载的类的清单。当然只照着这张清单去加载肯定是不够的,因为Spring Boot还允许我们指定排除一些类,所以Spring Boot最终是会是结合依赖清单和需要排出去的清单最后得到需要装载进来的所有依赖的列表。

2.自动配置

自动装载过程已经获得了需要装载的依赖的列表,接下来就是将这些依赖装载进IOC,但是只是装载进IOC肯定是不够的,有些类中的属性还需要进行初始化赋值,Spring Boot会在这一步根据配置将加载进来的实体类进行初始化配置(给变量该赋值就赋值)。

OK,整个Spring Boot的自动装配过程就是这样的。接下来才是可以去研究更深层源码过程了:

Spring Boot自动装配原理详解_springboot自动装配原理__BugMan的博客-CSDN博客

本文中将会提纲挈领然后深入浅出的聊一下自动装配原理和过程,思路会很清晰。

2.MVC

文章链接:

如何在Spring Boot中使用Spring MVC_springboot使用springmvc__BugMan的博客-CSDN博客

Spring Boot集成了Spring+Spring MVC,而Spring MVC的本质其实就是围绕一个核心的Servlet(DispatcherServlet)提供了一整套请求控制的组件:

所以要在Spring Boot中对请求进行处理直接对Spring MVC的组件进行配置即可。

3.安全

文章链接:
Spring Boot 安全_springboot 安全框架__BugMan的博客-CSDN博客

在后端来说,安全主要就是控制用户访问,让对应权限的用户能访问到对应的资源,主要是两点:

  • 认证
  • 授权

认证,确定是谁。     授权,核实权限。

Spring中推出了Spring Security作为Spring生态中的安全组件,它提供了一系列的安全服务和管理应用程序安全的能力。Spring Security的主要目标是保护应用程序,防止未经授权的访问,同时支持常见的认证和授权方案。在Spring Boot中可以通过引入Spring Security来配置应用的认证授权策略。文章中将会详细介绍Spring Security在Spring Boot中的集成使用。

4.监控

文章链接:

Spring Boot 监控_springboot 监控__BugMan的博客-CSDN博客

作为运维环节中至关重要的一环,监控能为可以帮助识别应用程序中的问题和故障。通过监控关键性能指标,可以迅速检测到异常行为,有助于排查问题的根本原因,从而减少故障的恢复时间。监控的数据也可以作为调优的依据,开发人员和运维团队可以使用这些数据来识别性能瓶颈,改进代码和架构,以提高应用程序的性能和响应时间。

监控一般有两个大维度:

  • 对服务器的监控
  • 对应用本身的监控

对服务器的监控:

对服务器的监控包括当前的内存、磁盘、CPU、IO等情况的实时监控。

对应用本身的监控:

对应用本身的监控包括应用自身的版本信息、名称,甚至是其中的依赖、配置等等。

Spring Boot提供了自身的监控组件——Spring Boot Actuator,该组件可以从除以上两个基本维度外很多其它维度来监控Spring Boot应用。文章中将会详细介绍该组件的用法。

5.集成数据库

文章链接:

Spring Boot常用数据库开发技术总结:JDBCTemplate、JPA、Mybatis_jdbctemplate与mybatis__BugMan的博客-CSDN博客

数据库开发一直是JAVA开发的核心之一,作为现在JAVA EE的基石框架,Spring Boot自身携带了一个JDBCTemplate框架,其对JDBC进行了基础的封装,使得Spring Boot原生就支持据库开发。同时Spring Boot也不排斥其它优秀的持久层框架,允许他们以极低的代价平滑的接入。

文章中会介绍最常用到的三个持久层框架,JdbcTemplate、JPA、mybatis如何接入Spring Boot并在其上进行开发。

6.集成Redis

文章链接:

Spring Boot中使用Redis_boot项目引入redis__BugMan的博客-CSDN博客

redis在当前J2EE应用中有多常用就不用赘述了,其常见的用法就可以包括很多J2EE中的关键点内容,包括但不限于:

  1. 缓存: Redis常用作高速缓存,存储热门数据,以减轻数据库负载。通过将频繁访问的数据存储在Redis中,可以显著减少数据库查询次数,从而提高应用程序的响应速度。Spring框架的Spring Cache模块支持集成Redis作为缓存提供者。

  2. 会话管理: 在分布式环境中,将用户会话数据存储在Redis中可以实现会话共享和负载均衡。这允许用户在多个应用服务器之间保持相同的会话状态。

  3. 消息队列: Redis的发布/订阅机制使其成为一个强大的消息队列中间件。它可以用于构建事件驱动的应用程序,如通知系统、实时聊天和任务队列。

  4. 分布式锁: Redis可以用于实现分布式锁,防止多个客户端同时修改共享资源,从而确保数据的一致性和安全性。

  5. 计数器和排行榜: Redis的计数器功能非常适合构建计数器和排行榜。你可以轻松地实现例如点赞计数、访问次数统计、排行榜等功能。

  6. 缓存预热: 在应用启动时,可以使用Redis来加载应用所需的数据,以减少启动时间和数据库负载。

  7. 分布式缓存管理: Redis支持分布式缓存管理,可以将缓存数据存储在多个Redis节点上,以提高可用性和容错性。

  8. 实时数据分析: Redis的数据结构和操作能力使其适用于实时数据分析和仪表板构建,例如实时统计和监控。

Spring Boot可以很方便的集成Redis,文章中将会详细对此进行讲解。

7.日志

文章链接:

Spring Boot 日志__BugMan的博客-CSDN博客

由一些历史原因,JAVA领域存在有很多日志框架,如Log4j、Logback、log4j2。因为不同日志框架的日志输出格式、API均不同、底层类都有所不同,因此Spring Boot作为一个开源的J2EE大框架,是需要适配各种不同的日志的,SpringBoot默认使用SLF4J作为日志门面,LogBack作为日志实现来记录日志。这里我们不去细究SLF4J是怎么去完成适配的,只需要知道SpringBoot自带了日志门面,使用日志门面来输出日志,当想要切换日志实现的时候,排掉LogBack,引入新的实现即可。

8.定时任务、异步消息、异步任务

定时任务文章链接:

Spring Boot定时任务_springboot 定时任务框架__BugMan的博客-CSDN博客

异步消息、异步任务文章链接:

Spring Boot异步任务、异步消息_异步消息通知__BugMan的博客-CSDN博客

定时任务:

J2EE应用程序中,定时任务具有广泛的用途,包括但不限于:

  1. 自动化和计划任务:定时任务允许开发人员自动执行重复性和计划性的任务,而无需手动干预。这可以包括定期备份数据库、生成报告、清理过期数据等。

  2. 批处理处理:定时任务在批处理处理中非常有用,例如在夜间处理大量数据、数据导入/导出等。定时任务可以定期触发批处理作业,以确保数据的及时处理。

  3. 缓存刷新:定时任务可以用于定期刷新缓存,以确保应用程序的缓存数据与底层数据源保持同步。这有助于提供最新的数据给应用程序用户。

  4. 邮件通知和提醒:定时任务可用于发送定期的邮件通知、提醒或警报,例如定时发送报告、账单提醒、生日祝福等。

  5. 定时数据采集:在数据仓库和数据分析应用中,定时任务可以用于定期从不同的数据源中采集数据,以进行进一步的分析和报告。

  6. 安全审计和监控:定时任务可以用于记录和监控应用程序的活动,例如登录尝试、异常检测等。这有助于提供应用程序的安全性和可用性。

  7. 定时维护:定时任务可以用于应用程序的定期维护,包括数据库索引重建、数据清理、日志清理等操作。

  8. 定时报表生成:定时任务可用于生成和分发定期报告,如销售报表、统计数据等。

  9. 资源管理:定时任务可以帮助管理资源,例如释放未使用的资源、管理连接池、限制资源的使用等。

  10. 性能监测和优化:通过定时任务,可以定期监测应用程序的性能,并采取措施来优化性能,以确保应用程序能够高效运行。

Spring Boot对于定时任务提供了支持,文章中将会对此有详细讲解。

异步消息、异步任务:

首先我们要知道计算机的线程资源是有限的,能开出来的线程就那么多,所以让处理业务的线程是很珍贵的,要将这些线程高效的利用起来。

在实际的一些业务开发中,有些操作是很耗时的,比如执行一条高耗时的SQL等。线程就只有阻塞在原地傻等这个操作结束。这显然是很浪费处理业务的线程资源的。在这些耗时的操作中有一些对实时性不敏感的操作,诸如磁盘IO、发短信等业务,并不需要立马就去做,而是只要去做了就行,那么这些操作是很适合做成异步的方式的,解放出线程资源,让系统的吞吐量能有明显的上升。

异步消息和异步任务可以用线程池来直接实现:

也可以用MQ+线程池来更大容量的实现:

Spring Boot中对此都做了很好的支持,文章中将会详细介绍。

9.如何查看Spring Boot各版本的变化

文章链接:

如何查看Spring Boot各版本的变化_springboot稳定版本__BugMan的博客-CSDN博客

Spring Boot的内容有前面8点就够了嘛?当然不够,当我们使用Spring Boot的时候,首先要做的是先选定要用哪个版本,但是打开官网我们会发现是这样一番景象:

有点懵逼是吧,各个版本到底是干什么的?各自的特点又是什么?有哪些功能特性?这些都是我们需要知道的,用什么技巧去选Spring Boot的版本将会是上面这篇文章的重点。

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

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

相关文章

了解CRM软件系统三种类型的特点与区别

市面上的CRM系统大致可以分为三种主要类型:分析型CRM、运营型CRM和协作型CRM。很多人对这三种类型的CRM系统不太了解,不知道该如何区分,下面我们就来说说CRM系统的3种类型:分析型、运营型和协作型的区别。 分析型CRM的特点&#…

系统灰度随笔记

系统灰度随笔记 这段时间系统重构,负责重构的其中一个模块需要与四个上游系统对接进行切换,虽然自己在这个过程中也设计了一套灰度方案来承接,将灰度的主动权控制在下游,但是很难同时应对四个上游系统,因为每个上游系…

Python语言学习实战-内置函数reduce()的使用(附源码和实现效果)

实现功能 reduce()是一个内置函数,它用于对一个可迭代对象中的元素进行累积操作。它接受一个函数和一个可迭代对象作为参数,并返回一个单个的累积结果。reduce()函数的语法如下: reduce(function, iterable[, initializer])其中,…

SpringMVC之JSON返回及异常处理

目录 JSON处理 导入依赖 配置Spring-mvc.xml ResponseBody注解使用 测试 目录 JSON处理 导入依赖 配置Spring-mvc.xml ResponseBody注解使用 测试 Jackson 定义 用法 常用注解 统一异常处理 为什么要全局异常处理? 异常处理思路 SpringMVC异常分类 综…

java基础-基础知识点

文章目录 jdk目录结构函数式接口wait、notify、notifyAll 并发编程Threadsleep、yield、joindaemon (守护线程) 锁[synchronized ](https://blog.csdn.net/EnjoyFight/article/details/127457876)线程池 jdk目录结构 jdk1.8 jdk20 函数式接口 http…

PyTorch之张量的相关操作大全 ->(个人学习记录笔记)

文章目录 Torch1. 张量的创建1.1 直接创建1.1.1 torch.tensor1.1.2 torch.from_numpy(ndarray) 1.2 依据数值创建1.2.1 torch.zeros1.2.2 torch.zeros_like1.2.3 torch.ones1.2.4 torch.ones_like1.2.5 torch.full1.2.6 torch.full_like1.2.7 torch.arange1.2.8 torch.linspace…

快速安装Redis以及配置Redis集群

Redis集群 本章是基于CentOS7下的Redis集群教程,包括: 单机安装RedisRedis主从Redis分片集群 1.单机安装Redis 首先需要安装Redis所需要的依赖: yum install -y gcc tcl#docker安装redis #1、docker pull redis#2、docker run --name my…

如何搭建一款BI系统

一、BI系统介绍 1.1 什么是BI系统 BI的英文全拼是Business Intelligence,商业智能,简称BI。我们经常能听到企业说“上BI”、“建设BI系统”、“构建BI决策平台”等内容。那么BI到底是什么呢? (1) 最初起源于固定报表 在几十年前&#xff…

【网络编程】深入理解TCP协议一(三次握手四次挥手、标记位、确认应答机制、超时重传机制)

TCP协议 1.三次握手四次挥手2.TCP协议段格式3.标记位介绍4.确认应答机制5.超时重传机制 1.三次握手四次挥手 当客户端发起连接请求时,SYN需要被设置位1,告诉服务器客户端希望建立一个链接服务器收到响应之后会回复 SYNACK,表示确认了客户端地…

Hum Brain Mapp:皮质脑-心轴的微状态

摘要 脑电图(EEG)微状态是具有准稳态头皮地形的大脑状态。这种状态是否会延伸到身体层面(即外周自主神经系统)目前尚不清楚。假设微状态作为一种中枢自主神经网络的功能状态会延伸到脑-心轴水平。因此,本研究结合了EEG和心跳动力学序列来估计起源于皮层的定向信息传…

第35章_瑞萨MCU零基础入门系列教程之ADXL345三轴传感器驱动实验

本教程基于韦东山百问网出的 DShanMCU-RA6M5开发板 进行编写,需要的同学可以在这里获取: https://item.taobao.com/item.htm?id728461040949 配套资料获取:https://renesas-docs.100ask.net 瑞萨MCU零基础入门系列教程汇总: ht…

虹科案例 | Zuellig Pharma和ELPRO通过符合GDP标准的温度监测和高效的温度数据管理为未来发展奠定基础

在本案例研究中,您将了解Zuellig Pharma 实施了温度监测解决方案,以一致的数据结构获取各国和各种运输方式的数据; 通过将温度数据上传到其数据库管理系统,显著提高了其效率; 并建立了为未来管理决策提供数据增值使用的基础。 项目合作伙伴 …

《AI新时代:大一新生如何快速入门IT专业?》

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🐅🐾猫头虎建议程序员必备技术栈一览表📖: 🛠️ 全栈技术 Full Stack: &#x1f4da…

《使用AADL的模型基工程》读书笔记(一)

1. 什么是模型基工程? 模型基工程(Model-Based Engineering,MBE)旨在建立和分析系统模型,这样就能够预测和了解该系统的能力和工作质量属性 (如性能、可靠性或信息安全性)。在系统集成和验收试验之前,很难发现一些系统级的问题&a…

【数据结构】——排序算法的相关习题

目录 一、选择题题型一 (插入排序)1、直接插入排序2、折半插入排序3、希尔排序 题型二(交换排序)1、冒泡排序2、快速排序 题型三(选择排序)1、简单选择排序~2、堆排序 ~题型四(归并排序&#xf…

测试平台项目部署二(手动部署改成Dockerfile)

测试平台项目部署二(手动部署改成Dockerfile) 一、Dockerfile制作1、entrypoint.sh制作2、构建镜像3、启动容器二、遇到的问题1、pip install --no-cache-dir -r requirements.txt安装第三方库时,报Installing build dependencies: started2、安装第三方库文件比较慢,考虑更…

可以在图片上编辑文字的软件推荐?来试试这几款

在图片上编辑文字的优势之一是可以更好地传达信息。有时候,图片本身可能不足以清楚地说明重点,但是添加文字可以强调或澄清要点。此外,对于社交媒体等视觉重要的平台,图像上的文字可以更好地吸引用户的注意力和交流。那么有哪些可…

TypeScript类型兼容:结构化类型

🎬 岸边的风:个人主页 🔥 个人专栏 :《 VUE 》 《 javaScript 》 ⛺️ 生活的理想,就是为了理想的生活 ! 目录 1. 鸭子类型:定义和示例 2. 鸭子类型的优点 2.1 代码的灵活性 2.2 代码的复用 2.3 与 JavaScript 的…

ACM模板二:树、图、并查集、DancingLink

目录 〇,全文说明、宏定义代码 一,二叉树 二,树状数组、线段树 三,多叉树 四,并查集、DancingLink、无向图、最小生成树 五,有向图、单源最短路径、连通分量、拓扑排序 六,网格图、回路链…

关于 Resolution(分辨率、解析力)各单位的意义及相互之间的换算

1、问题背景 最近在调试的项目,有关于对解析力的要求,用 imatest 软件测试 MTF50 的值,如下图所示,可以看到他有不同的单位表示,LW/PH、Cycles/pixel 。另外关于解析力的单位还有LP/mm、L/mm、Cycles/mm、LP/PH&#…