墨 禹
一个追求有道有术的非典型程序员
展开
-
Spring Boot 3.x 系列【51】启动流程 | 最后阶段
终于启动流程到了最后一个阶段,这里主要是打印启动完成日志、调用监听器、运行Runners 。原创 2023-07-26 17:10:16 · 684 阅读 · 0 评论 -
Spring Boot 3.x 系列【50】启动流程 | 刷新上下文
紧接上文创建、准备上下文之后,还需要进一步处理才能正常使用,下一步就是刷新上下文。原创 2023-07-26 16:51:34 · 628 阅读 · 0 评论 -
Spring Boot 3.x 系列【49】启动流程 | 创建、准备应用上下文
紧接上文,下一步是创建和准备应用上下文。原创 2023-07-26 09:50:07 · 729 阅读 · 0 评论 -
Spring Boot 3.x 系列【48】启动流程 | 准备环境
在上文中,我们分析到启动刚开始阶段,会去调用监听器进行一些初始化的操作,接下来进入到环境准备阶段。原创 2023-07-21 17:07:30 · 894 阅读 · 0 评论 -
Spring Boot 3.x 系列【47】启动流程 | 启动监听器
SpringApplicationRunListener是Spring Boot提供的接口,是SpringApplication.run()方法的监听器,在整个启动流程中,接收不同执行点的事件通知。可以在接口定义中看到,一旦启动阶段发布了事件,该监听器就会观察到事件并做出相应操作。原创 2023-07-21 13:50:02 · 269 阅读 · 0 评论 -
Spring Boot 3.x 系列【46】启动流程 | 创建引导程序上下文
Spring本身提供了两种IOC容器,也就是BeanFactory和ApplicationContext。ApplicationContext翻译过来是应用下上文的意思,它是一种高级容器,除了具备BeanFactory的能力之外,还支持国际化、事件广播、获取资源等BeanFactory不具备的功能。Spring应用程序在启动开始阶段,就需要使用IOC容器进行相关初始化操作,但是这个时候并不会直接创建ApplicationContext,因为创建它的成本很高,需要在所有工作都准备好后,才会执行创建。原创 2023-07-20 14:48:14 · 194 阅读 · 0 评论 -
Spring Boot 3.x 系列【45】启动流程 | SpringApplication
在使用Spring Boot开发应用时,我们只需要一个简单启动类,就能完成整个应用的加载启动。SpringApplication翻译过来就是Spring应用程序的意思,它的主要作用就是在JAVA main方法中引导和启动Spring应用程序。原创 2023-06-28 16:20:25 · 409 阅读 · 0 评论 -
Spring Boot 3.x 系列【44】启动流程 | @SpringBootApplication
在引入了starter包后,程序只需要使用@SpringBootApplication注解,然后调用SpringApplication. run方法,就可以完成应用启动、自动配置,接下来分析下@SpringBootApplication注解。原创 2023-06-28 16:11:41 · 496 阅读 · 0 评论 -
Spring Boot 3.x 系列【43】启动流程 | SPI机制
在一个软件中往往有很多模块,模块之间进行交互时,一般都是面向接口编程。如果直接调用实现类,耦合度太高,一旦想替换另一种实现,就需要修改代码。而SPI提供了一种为接口寻找服务实现的机制,我们直接调用接口进行编码,具体实现由SPI去动态加载。原创 2023-06-28 15:58:01 · 729 阅读 · 0 评论 -
Spring Boot 3.x 系列【42】应用部署 | Linux
Linux是应用最广泛的服务器的操作系统,我们在生产环境部署时,一般都会选择Linux,本篇文档主要讲解,如何在Linux中部署Spring Boot应用程序。目前采用jar包的部署方式,当然在目前云原生时代,一般都会选择容器部署(后续讲解)。原创 2023-06-25 16:28:39 · 751 阅读 · 0 评论 -
Spring Boot 3.x 系列【41】应用部署 | Windows
项目实际部署上线时,并不推荐使用Windows的服务器操作系统,其安全性、性能等方面低于Linux系统。原创 2023-06-19 09:51:53 · 1627 阅读 · 0 评论 -
Spring Boot 3.x 系列【40】Spring Boot 3.1.0 新特性&升级指南
最近Spring Boot 正式发布了3.1.0版本,而2.7、3.0版本会在今年底结束支持,本系列后续文档会基于3.1.0版本。原创 2023-06-02 12:39:00 · 729 阅读 · 0 评论 -
Spring Boot 3.x 系列【39】应用部署 | 构建容器镜像
Spring Boot官文中对镜像打包功能描述为Packaging OCI Images(打包为OCI镜像)。为了推进容器化技术的工业标准化,2015 年 6 月在 DockerCon上 Linux基金会与Google,华为,惠普,IBM,Docker,Red Hat,VMware等公司共同宣布成立开放容器项目(OCP),后更名为OCI。它的主要目标便是建立容器格式和运行时的工业开放通用标准。原创 2023-05-23 14:58:40 · 653 阅读 · 1 评论 -
Spring Boot 3.x 系列【38】服务监控 | 自定义端点
Spring Boot Actuator默认已提供了很多端点,我们之前详细了解过健康、应用、指标端点,端点可以通过HTTP或者JMX进行公开,因为我们使用Spring MVC进行开发,所以很合适使用HTTP公开。JMX是Java Management Extensions管理工具,比如JConsole、Visual VM,一般用于开发人员。————————————————版权声明:本文为CSDN博主「云烟成雨TD」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链原创 2023-05-23 10:09:07 · 657 阅读 · 0 评论 -
Spring Boot 3.x 系列【37】服务监控 | 指标信息
Spring Boot使用Micrometer框架进行指标检测,可以采集CPU、JVM、磁盘、数据库、缓存等指标,然后可以对接第三方监控系统,进行数据存储和可视化分析。原创 2023-05-23 08:50:35 · 502 阅读 · 0 评论 -
Spring Boot 3.x 系列【36】服务监控 | 应用信息
info端点主要是获取应用程序的各种信息,一般需要用户自定义,INFO信息提供的顶级接口为InfoContributor,Spring Boot 包含许多该接口的自动配置 Bean。原创 2023-05-22 21:35:48 · 582 阅读 · 1 评论 -
Spring Boot 3.x 系列【35】服务监控 | 健康信息
Health是健康的意思,该端点用来检查正在运行的程序状态,可以在生产环境中监控软件,当发生故障时可以进行告警。原创 2023-05-22 21:10:44 · 678 阅读 · 0 评论 -
Spring Boot 3.x 系列【33】集成Excel工具实现导入导出功能
在实际业务开发中,导入导出Excel文件是很常见的需求,本篇文档主要演示如何在Spring Boot中集成相关Excel工具。原创 2023-05-19 22:06:24 · 817 阅读 · 0 评论 -
Spring Boot 3.x 系列【34】服务监控 | Spring Boot Actuator 入门案例
Spring Boot Actuator是Spring Boot除了自动配置外另一个重要的核心功能,提供了spring-boot-actuator模块用于后台应用程序运行监控、指标收集、审计等功能,可以通过使用HTTP端点或使用JMX来管理和监控你的应用程序。原创 2023-05-19 22:40:08 · 823 阅读 · 0 评论 -
Spring Boot 3.x 系列【32】集成消息队列
MQ是Message Queue消息队列的首字母缩写,用队列机制来实现消息传递,生产者产生消息并放入队列,然后由消费者去处理。消费者可以到指定队列拉取消息,或者订阅相应的队列,由MQ服务端给其推送消息。一般用来解决应用解耦,异步消息,流量削峰等问题,实现高性能,高可用,可伸缩和最终一致性架构。原创 2023-05-09 17:10:44 · 721 阅读 · 0 评论 -
Spring Boot 3.x 系列【31】集成邮件发送
电子邮件是一种用电子手段提供信息交换的通信方式,是互联网应用最广的服务。我们在开发IT项目时,往往也会遇到发送电子邮件邮箱注册账号邮箱找回密码邮箱接收资料文件。原创 2023-05-09 14:29:51 · 875 阅读 · 0 评论 -
Spring Boot 3.x 系列【30】一行代码搞定高级查询
Bean Searcher是一个专注高级查询的只读ORM框架,天生支持联表,免DTO/VO转换,使一行代码实现复杂列表检索成为可能!它可以像 基础组件ORM那样使用,同时也拥有接近低代码的开发效率。原创 2023-05-08 15:49:59 · 555 阅读 · 0 评论 -
Spring Boot 3.x 系列【29】MyBatis增强框架哪家强
MyBatis作为国内开发者非常喜爱的一款数据层框架,国内大佬们也开发了一系列基于MyBatis的增强框架,本篇文档主要介绍在中,如何选择最合适的MyBatis增强框架。官网地址(简称MP)是一个MyBatis增强工具,在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生。开源时间很早,2016发布,目前已成为使用范围最广的MyBatis增强框架,但是后续该项目的发展情况,可能会处于只维护状态了,不会再添加什么新功能,新功能都放在了收费的企业版中。原创 2023-05-08 10:51:51 · 715 阅读 · 0 评论 -
Spring Boot 3.x 系列【28】集成对象转换神器MapStruct
MapStruct 是一个代码生成器,它基于约定优于配置方法极大地简化了Java bean类型之间映射的实现。生成的映射代码使用简单的方法调用,因此速度快、类型安全且易于理解。与其他映射框架相比,MapStruct 在编译时生成映射,以确保高性能,允许快速的开发人员反馈和彻底的错误检查。原创 2023-05-06 15:33:36 · 1194 阅读 · 0 评论 -
Spring Boot 3.x 系列【27】集成简化开发神器Lombok
使用JAVA编写POJO类时,需要添加字段的getter/setter、equals等方法,虽然可以直接生成,但是也有以下问题:看起来并不简洁字段名称修改时,相应方法也需要修改Lombok的出现解决了以上问题,通过简单的注解的形式来简化消除一些必须有但显得很臃肿的 Java 代码。————————————————原创 2023-04-28 18:03:25 · 1441 阅读 · 2 评论 -
Spring Boot 3.x 系列【26】优雅的参数校验
在实际开发项目中,进行参数校验是必不可少的一项工作,当你要处理一个应用程序的业务逻辑,数据校验是你必须要考虑和面对的事情。必须通过某种手段来确保输入进来的数据从语义上来讲是正确的。常见的数据检查工作包括必填项检查、数值检查、长度检查、身份证号码、手机号码检查等。阿里巴巴开发手册13.【参考】调用频次低的方法。执行时间开销很大的方法。此情形中,参数校验时间几乎可以忽略不计,但如果因为参数错误导中间执行回退,或者错误,那得不偿失。需要极高稳定性和可用性的方法。原创 2023-04-14 17:52:08 · 813 阅读 · 0 评论 -
Spring Boot 3.x 系列【25】Spring Cache缓存技术使用详解
在实际开发中,最常见的就是**数据库缓存**,将热点的数据保存在缓存中,减少数据库的查询,不仅能减轻数据库压力,更能提升响应速度。如何去实现**缓存**,目前也有很多种策略,最常用的就是`Cache-Aside `(边缘缓存模式),适用于读多写少的业务场景,当然关于数据一致性的问题这里不讨论。原创 2023-04-14 11:15:45 · 878 阅读 · 0 评论 -
Spring Boot 3.x 系列【24】SQL、NoSQL数据库支持
`Spring Data`基于`Spring`编程模型,提供了数据访问能力。支持关系性数据库、非关系性数据库、`MapReduce`、基于云的数据服务等。`Spring Data`是一个数据访问框架全家桶,包含了很多个子项目,每个子项目对应一种类型的数据库。原创 2023-04-13 22:01:26 · 724 阅读 · 0 评论 -
Spring Boot 3.x 系列【23】集成Spring WebFlux开发响应式应用程序
官方文档地址Spring MVC是Spring专门为和Servlet容器而设计的Web框架, 在5.0版本中加入了基于响应式的Web框架,它是完全非阻塞的,支持背压,并支持在和Servlet容器上运行。非阻塞函数式编程响应式。原创 2023-04-13 21:59:05 · 1181 阅读 · 0 评论 -
Spring Boot 3.x 系列【22】嵌入式 Servlet 容器支持
本篇文档主要学习中Servlet容器的相关知识。原创 2023-03-21 13:23:52 · 509 阅读 · 0 评论 -
Spring Boot 3.x 系列【21】集成在线API文档框架Spring Doc
现在都是基于前后端分离开发,前后端开发人员之间的协调沟通显得及其重要,例如后端开发好了一个访问接口,如何将该接口的访问路径、参数、响应结果告知前端?第一个想到的就是写个API接口文档呗~ 写个word文档?其实不然,现在有很多开源的API文档管理工具,比如Eolinker,后端将接口信息编辑并保存在线文档中,前端就可以查看了。然而,这种方式存在一个几个弊端,首先是添加麻烦,入参出参很多时,还是需要花点时间,然后就是如果接口变动,又需要去修改文档。原创 2023-03-20 14:54:48 · 752 阅读 · 1 评论 -
Spring Boot 3.x 系列【20】集成Spring Mvc 开发应用程序
本篇文档主要介绍中使用 Spring MVC开发Web应用程序的相关技巧。非常适合Web应用程序开发,支持使用嵌入式的Tomcat Jetty Undertow Netty 创建HTTP服务器。原创 2023-03-20 13:56:00 · 488 阅读 · 1 评论 -
Spring Boot 3.x 系列【19】自定义Starter启动器
提供了很多Starter包,用起来非常方便,本篇文档讲解如何实现自定义组件的自动配置、Starter启动器。需求场景:比如我们公司现在使用Minio作为文件服务器,文件后台服务需要引入minio-java客户端和文件服务器进行交互操作。在Minio官方仓库没有发现集成Spring相关的库。如果使用传统的方式集成,文件服务需要引入相关包,编写配置,编写客户端等等…这种场景下,可以考虑封装为公用组件,集成自动配置并提供Starter包,使用时,只需要引入Starter。原创 2023-03-16 14:13:53 · 1952 阅读 · 1 评论 -
Spring Boot 3.x 系列【18】单元测试和热部署
当我们使用开发完一项业务功能后,往往都需要进行单元测试(Unit Test),对程序中的最小可测试单元进行检查和验证,及时发现问题并修改。接下来我们学习如何在中进行单元测试。官方文档地址JUnit是一个Java语言的单元测试框架,目前最新版本为Junit 5.x版本开始使用JUnit 5作为默认的单元测试库。与之前的版本不同,JUnit 5:基础服务平台,并提供API标准,遵循该标准的测试引擎都能运行在该平台上JUnit5核心模块,提供编写测试、扩展、测试引擎:提供兼容JUnit4.x。原创 2023-03-15 16:48:25 · 819 阅读 · 0 评论 -
Spring Boot 3.x 系列【17】条件装配注解汇总介绍
在上篇文档中,我们回顾了Spring中创建Bean的各种方式,如果我们需要根据其他条件或者配置项来控制是否注册,应该怎么办呢?已经为我们提供了基于的一系列的派生注解,实现条件装配。原创 2023-03-14 16:25:47 · 482 阅读 · 0 评论 -
Spring Boot 3.x 系列【16】创建Bean的八种方式
在Spring中,Bean是指由容器实例化、组装和管理的对象,是构成应用程序的组件。为了更好的使用,所以接下来汇总学习下Spring提供创建Bean的多种方式以及使用场景。原创 2023-03-14 12:10:50 · 461 阅读 · 0 评论 -
Spring Boot 3.x 系列【15】多环境配置方案
当一个项目在开发环境开发完成后,一般还需要经过测试、预发布,最终在生产环境正式运行。不同的环境配置也不尽相同,比如数据库地址端口号SQL日志是否打印等等。一个完善的程序需要适应多环境,接下来我们详细了解下如何实现多环境配置。原创 2023-03-13 16:03:27 · 568 阅读 · 1 评论 -
Spring Boot 3.x 系列【14】Configuration相关注解汇总介绍
本篇文档主要介绍`Spring Boot`中携带了`Configuration`字样相关注解的详细用法。原创 2023-03-11 09:45:58 · 608 阅读 · 0 评论 -
Spring Boot 3.x 系列【13】@ConfigurationProperties注解
本篇文档主要介绍中注解的详细用法。使用注解来注入配置属性有时会很麻烦,尤其是使用多个属性或者数据分层的时。提供了另外一种方法,通过强类型的Bean对象管理应用程序的配置。@Value和功能@Value宽松绑定支持有限元数据支持(自动补充,提示功能)支持不支持SpEL表达式不支持支持在的自动配置中,大量使用了注解将配置文件属性映射为Bean注解位于模块的包下,作用就是将一些外部配置属性绑定到类中。这样就可以很方便的通过类来读取外部配置,这也是外部化配置最重要的一个功能。原创 2023-03-10 23:43:41 · 552 阅读 · 0 评论 -
Spring Boot 3.x 系列【12】定时任务
本篇文档主要介绍Spring Boot中定时任务的详细用法,以及集成常用的第三方任务调度框架。在实际开发中,定时任务功能是我们经常需要的,除了JDK自带,也有很多实现定时任务的框架,比如Spring、XXL-JOB、Quartz等等。Quartz开源的一个任务调度框架。简单易用,Spring框架天然扩展支持,官方提供Starter。原创 2023-03-07 22:46:35 · 572 阅读 · 1 评论