【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.rhkb.cn/news/131959.html

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

相关文章

MySQL安装validate_password_policy插件

功能介绍 validate_password_policy 是插件用于验证密码强度的策略。该参数可以设定三种级别:0代表低,1代表中,2代表高。 validate_password_policy 主要影响密码的强度检查级别: 0/LOW:只检查密码长度。 1/MEDIUM&am…

YashanDB:潜心实干,数据库核心技术突破没有捷径可走

都说数据库是三大基础软件中的一块硬骨头,技术门槛高、研发周期长、工程要求高,市场长期被几大巨头所把持。 因此,实现突破一直是中国数据库产业的夙愿。自上个世纪80年代起,中国数据库产业走过艰辛坎坷的四十余载,终…

vue组件库开发,webpack打包,发布npm

做一个像elment-ui一样的vue组件库 那多好啊!这是我前几年就想做的 但webpack真的太难用,也许是我功力不够 今天看到一个视频,早上6-13点,终于实现了,呜呜 感谢视频的分享-来龙去脉-大家可以看这个视频:htt…

美东一公司的郁闷面试题

说是题目可以用不同的语言,但是貌似 Java 是多线程的,用 Java 写肯定容易不少。 但,觉得这个题目用多线程简直是有点脱了裤子放屁。 完整题目内容 题目的网站内容如下: Please complete the following challenge in one of th…

【自动驾驶决策规划】POMDP之Introduction

文章目录 前言Markov PropertyMarkov ChainHidden Markov ModelMarkov Decision ProcessPartially Observable Markov Decision ProcessBackground on Solving POMDPsPOMDP Value Iteration Example 推荐阅读与参考 前言 本文是我学习POMDP相关的笔记,由于个人能力…

2024字节跳动校招面试真题汇总及其解答(一)

1. 【算法题】重排链表 给定一个单链表 L 的头节点 head ,单链表 L 表示为: L0 → L1 → … → Ln - 1 → Ln请将其重新排列后变为: L0 → Ln → L1 → Ln - 1 → L2 → Ln - 2 → … 不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 示例 1: 输入:hea…

Kafka3.0.0版本——消费者(自动提交 offset)

目录 一、自动提交offset的相关参数二、消费者(自动提交 offset)代码示例 一、自动提交offset的相关参数 官网文档 参数解释 参数描述enable.auto.commi默认值为 true,消费者会自动周期性地向服务器提交偏移量。auto.commit.interval.ms如果…

基于视觉重定位的室内AR导航APP的大创项目思路(2):改进的项目思路——建图和定位分离

文章目录 一、建图二、定位首先是第一种方法:几何方法其次是第二种方法:图像检索方法最后是第三种方法:深度学习方法 前情提要: 是第一次做项目的小白,文章内的资料介绍如有错误,请多包含! 一、…

华为云云耀云服务器L实例评测|初始化centos镜像到安装nginx部署前端vue、react项目

文章目录 ⭐前言⭐购买服务器💖 选择centos镜像 ⭐在控制台初始化centos镜像💖配置登录密码 ⭐在webstorm ssh连接 服务器⭐安装nginx💖 wget 下载nginx💖 解压运行 ⭐添加安全组⭐nginx 配置⭐部署vue💖 使用默认的ng…

【文件上传-配置文件】crossdomain.xml跨域策略配置文件上传

目录 一、0x00 前言 二、基础知识 1、Flash 2、crossdomain.xml文件 3、crossdomain.xml格式 4、crossdomain.xml相关参数 三、漏洞利用 1、方法: 2、上传漏洞配置文件 一、0x00 前言 在很多地方都会见查是否跨域 比如某些特定的步骤、CSRF、flash跨域劫…

SimpleCG程序交互操作

前言 之前所有示例程序都是属于展示型的,只是作为展示板输出使用,不涉及键盘和鼠标的输入交互,下面我们开始接触具有交互功能的程序。 没有交互功能的程序可以满足一定需求,不过大部分的程序是不能脱离交互功能的。程序依据使用者的操作进行相…

PbootCMS在搭建网站

1、打开网站 https://www.pbootcms.com/ 2、点击 “本站” 下载最新的网站代码 3、在本地laragon/www下创建目录(hejuwuye),并将代码放进去 4、创建本地数据库,数据库名称为: hejuwuye,然后将static/bac…

第三方软件测试机构有哪些测试服务软件测试报告收费标准是怎样的?

软件验收机构 一、什么是第三方软件测试机构? 第三方软件测试机构是区别于软件开发公司以及软件需求方的第三方机构,软件企业将软件测试外包给第三方软件测试机构已经成为了行业发展趋势。既省心省力,又降低企业成本,得出的软件测试结果以…

《机器学习核心算法》分类算法 - 朴素贝叶斯 MultinomialNB

「作者主页」:士别三日wyx 「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」:小白零基础《Python入门到精通》 朴素贝叶斯 1、朴素贝叶斯API2、朴素贝叶斯算法实际应用2.1、获取数据集2.2、划分…

EasyPHP-Devserver-17安装和配置mantisBT

文章目录 1、准备工作2、安装easyphp2.1 http://127.0.0.1 无法访问 3、安装mantisBT和phpMyAdmin3.1 配置浏览器的访问url和端口号(配置局域网内可访问)3.2 安装mantis 4、Administrator 注册新用户时设置登录密码5、附件上传6、邮件配置 文章参考自&am…

前端开发工具:助力创造精彩Web体验

💂 个人网站:【工具大全】【游戏大全】【神级源码资源网】🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】💅 寻找学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】 当涉及到前端开发工具时…

Spring Boot配置文件(YAML Properties)总结

文章目录 配置文件的作用YAML配置文件Properties配置文件配置文件的加载顺序激活不同的配置文件配置文件的占位符自定义配置属性加密敏感信息配置文件的最佳实践结论 🎉欢迎来到架构设计专栏~Spring Boot配置文件(YAML & Properties)总结…

C#控制台程序中使用log4.net来输出日志

Apache log4net 库是一个帮助程序员将日志语句输出到各种输出目标的工具。log4net 是优秀的 Apache log4j™ 框架到 Microsoft .NE​​T 运行时的端口。 我喜欢他可以自定义输出,区分等级等特点。 导入库 我们在工程里添加NuGet的包。输入名称log4net &#xff0…

【每日一题】852. 山脉数组的峰顶索引

852. 山脉数组的峰顶索引 - 力扣&#xff08;LeetCode&#xff09; 符合下列属性的数组 arr 称为 山脉数组 &#xff1a; arr.length > 3存在 i&#xff08;0 < i < arr.length - 1&#xff09;使得&#xff1a; arr[0] < arr[1] < ... arr[i-1] < arr[i] ar…

SpringMVC 的三种异常处理方式详解

目录 1. 什么是异常 2. 为什么要全局异常处理 3. SpringMVC异常分类 4. 异常处理思路 5. 三种异常处理方式示例 ① 配置 SimpleMappingExceptionResolver 处理器 ② 实现 HandlerExceptionResolver 接口 ③ 使用ControllerAdviceExceptionHandler实现全局异常 6. 响应…