【Spring Boot】有这一文就够了

作者简介

前言

作者之前写过一个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.hqwc.cn/news/108696.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Jmeter系列进阶-获取图片验证码(4)

安装工具 通过ocrserver工具识别图片验证码,解压后 .exe双击启动即可。 jmeter中使用 (1)HTTP请求获取验证码 (2)在获取验证码图片的接口下面添加监听器》保存响应到文件;如下图: &#x…

易点易动固定资产管理系统:为企业提供高效资产管理的必备利器

在如今竞争激烈的商业环境中,企业对于固定资产的管理显得尤为重要。然而,传统的手工管理方式已经无法满足企业对于高效、准确、智能化管理的需求。因此,引入一款先进的固定资产管理系统是必不可少的。易点易动固定资产管理系统作为一款领先的…

【Spring使用三级缓存解决循环依赖的过程】

testService1和testService2相互依赖 当Spring创建testService1对象时,它会先从一级缓存中查找是否存在testService1的实例。如果缓存中不存在testService1实例,它将继续查找二级缓存中是否存在testService1。如果二级缓存中也不存在testService1实例&…

浅述数据中心供配电系统解决方案及产品选型

安科瑞 华楠 【摘 要】现如今,社会主要领域已从对单个设备的关注转化为对于系统解决方案的关注,数据中心的供应商们也想尽办法去满足所面对的各方面需求。基于此,主要提出了云计算数据中心供配电解决方案,同时还对数据中心供配电…

如何在matlab绘图的标题中添加变量?变量的格式化字符串输出浅析

文章目录 matlab的格式化输出控制符字段宽度、精度和对齐方式的控制matlab的格式化输出总结 matlab的格式化输出控制符 Matlab在画图的时候,采用title函数可以增加标题,该函数的输入是一个字符串,有时候我们想在字符串中添加一些变量&#x…

Linux基础入门

一、操作系统安装方法 1、使用u盘安装 工具&#xff08;前提条件&#xff09;&#xff1a; <1>u盘 <2>镜像文件iso/msdn.itellyou.cn <3>把u盘做成PE&#xff1a;大白菜/老毛桃/winPE/软碟通/ultralSO 设置BIOS&#xff1a;通过u盘启动 安装系统&…

大橙子vfed 5.0去授权完美破解主题模版源码 | 苹果CMS

大橙子vfed 5.0去授权完美破解主题模版源码 | 苹果cms 大橙模版算是在苹果cms众多主题里&#xff0c;较为亮眼的一款了&#xff0c;主题简洁&#xff0c;功能众多&#xff0c;非常的齐全。 今天分享的就是大橙5.0版本模板&#xff0c;完美破解&#xff0c;自测无后门&#xf…

pywinauto:Windows桌面应用自动化测试(二)

前言 上一篇文章地址&#xff1a; pywinauto&#xff1a;Windows桌面应用自动化测试&#xff08;一&#xff09;_pywinauto中文手册_Lion King的博客-CSDN博客 下一篇文章地址&#xff1a; 暂无 一、书接上回 在上一篇文章地址中&#xff0c;我们提到去试用一下 “国产ap…

python自(2)切片 字典 遍历删除添加修改查询定义函数函数返回值作用域序列化异常报错urllib使用一个类型六个方法下载 视频音频图片

切片 # # 切片# s hello word# # 下标索引为0的 # print(s[0]) #h# # 左闭右开 &#xff08;左是下标开始的&#xff0c;右是几个索引值&#xff09;例如从0开始算 4个索引值 # print(s[0:4]) #hell# # 更改起始值的开始位置 # print(s[1:]) #ello word# # 下标结束位置 # p…

Ubuntu下Nginx配置ModSecurity详细思路及过程

下面是一个简介&#xff1a; Ubuntu是一个linux操作系统&#xff0c;Nginx是一个web服务器软件&#xff0c;ModSecurity是一款开源的web应用防火墙&#xff08;江湖人称“WAF”&#xff09;。 如果上面的概念没有一定的了解&#xff0c;下面的内容其实也能看。就是不好操作。…

短视频商城系统的技术架构与最佳实践

短视频商城系统的概念正在迅速崭露头角&#xff0c;它不仅融合了视频内容和电子商务&#xff0c;还需要一个坚固的技术架构来支持其功能。在本文中&#xff0c;我们将探讨构建短视频商城系统的关键技术组件以及最佳实践&#xff0c;并提供一些示例代码来说明这些概念。 技术架…

Vue3路由

文章目录 Vue3路由1. 载入vue-router 库2. 实例2.1 Vue.js vue-router 实现单页应用2.2 router-link创建链接2.3 router-view显示与url对应组件2.4 <router-link> 相关属性 Vue3路由 1. 载入vue-router 库 Vue.js 路由需要载入vue-router 库 安装直接下载地址&#xf…