作者简介
前言
作者之前写过一个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.自动装载
自动装载,将所有需要的资源(类和配置文件等)加载进来。既然需要自动将一些东西装入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中的关键点内容,包括但不限于:
-
缓存: Redis常用作高速缓存,存储热门数据,以减轻数据库负载。通过将频繁访问的数据存储在Redis中,可以显著减少数据库查询次数,从而提高应用程序的响应速度。Spring框架的Spring Cache模块支持集成Redis作为缓存提供者。
-
会话管理: 在分布式环境中,将用户会话数据存储在Redis中可以实现会话共享和负载均衡。这允许用户在多个应用服务器之间保持相同的会话状态。
-
消息队列: Redis的发布/订阅机制使其成为一个强大的消息队列中间件。它可以用于构建事件驱动的应用程序,如通知系统、实时聊天和任务队列。
-
分布式锁: Redis可以用于实现分布式锁,防止多个客户端同时修改共享资源,从而确保数据的一致性和安全性。
-
计数器和排行榜: Redis的计数器功能非常适合构建计数器和排行榜。你可以轻松地实现例如点赞计数、访问次数统计、排行榜等功能。
-
缓存预热: 在应用启动时,可以使用Redis来加载应用所需的数据,以减少启动时间和数据库负载。
-
分布式缓存管理: Redis支持分布式缓存管理,可以将缓存数据存储在多个Redis节点上,以提高可用性和容错性。
-
实时数据分析: 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应用程序中,定时任务具有广泛的用途,包括但不限于:
-
自动化和计划任务:定时任务允许开发人员自动执行重复性和计划性的任务,而无需手动干预。这可以包括定期备份数据库、生成报告、清理过期数据等。
-
批处理处理:定时任务在批处理处理中非常有用,例如在夜间处理大量数据、数据导入/导出等。定时任务可以定期触发批处理作业,以确保数据的及时处理。
-
缓存刷新:定时任务可以用于定期刷新缓存,以确保应用程序的缓存数据与底层数据源保持同步。这有助于提供最新的数据给应用程序用户。
-
邮件通知和提醒:定时任务可用于发送定期的邮件通知、提醒或警报,例如定时发送报告、账单提醒、生日祝福等。
-
定时数据采集:在数据仓库和数据分析应用中,定时任务可以用于定期从不同的数据源中采集数据,以进行进一步的分析和报告。
-
安全审计和监控:定时任务可以用于记录和监控应用程序的活动,例如登录尝试、异常检测等。这有助于提供应用程序的安全性和可用性。
-
定时维护:定时任务可以用于应用程序的定期维护,包括数据库索引重建、数据清理、日志清理等操作。
-
定时报表生成:定时任务可用于生成和分发定期报告,如销售报表、统计数据等。
-
资源管理:定时任务可以帮助管理资源,例如释放未使用的资源、管理连接池、限制资源的使用等。
-
性能监测和优化:通过定时任务,可以定期监测应用程序的性能,并采取措施来优化性能,以确保应用程序能够高效运行。
Spring Boot对于定时任务提供了支持,文章中将会对此有详细讲解。
异步消息、异步任务:
首先我们要知道计算机的线程资源是有限的,能开出来的线程就那么多,所以让处理业务的线程是很珍贵的,要将这些线程高效的利用起来。
在实际的一些业务开发中,有些操作是很耗时的,比如执行一条高耗时的SQL等。线程就只有阻塞在原地傻等这个操作结束。这显然是很浪费处理业务的线程资源的。在这些耗时的操作中有一些对实时性不敏感的操作,诸如磁盘IO、发短信等业务,并不需要立马就去做,而是只要去做了就行,那么这些操作是很适合做成异步的方式的,解放出线程资源,让系统的吞吐量能有明显的上升。
异步消息和异步任务可以用线程池来直接实现:
也可以用MQ+线程池来更大容量的实现:
Spring Boot中对此都做了很好的支持,文章中将会详细介绍。
9.如何查看Spring Boot各版本的变化
文章链接:
如何查看Spring Boot各版本的变化_springboot稳定版本__BugMan的博客-CSDN博客
Spring Boot的内容有前面8点就够了嘛?当然不够,当我们使用Spring Boot的时候,首先要做的是先选定要用哪个版本,但是打开官网我们会发现是这样一番景象:
有点懵逼是吧,各个版本到底是干什么的?各自的特点又是什么?有哪些功能特性?这些都是我们需要知道的,用什么技巧去选Spring Boot的版本将会是上面这篇文章的重点。