用300行代码手写SpringBoot核心原理
本文将带你深入了解SpringBoot框架的核心原理,通过300行代码的迷你版本来展示SpringBoot核心注解的作用及特性,在学习本篇文章时,可以同时学习:深度揭秘SpringBoot自动装配的实现原理,相信大家会对本文中的各个功能会有更加深刻的理解
本文内容:
手写模拟SpringBoot启动过程
手写模拟SpringBoot条件注解功能
手写模拟 ...
OpenFeign实战:Spring Cloud微服务间优雅调用指南
前言
OpenFeign 是 Spring Cloud 官方推荐的声明式 HTTP 客户端,让微服务间调用像调用本地方法一样简单。本文带你全面掌握 OpenFeign 的核心用法。
一、引入依赖
<!-- pom.xml -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</depende ...
Spring AI 1.1.4 正式发布,又新增一个新功能!
大家好,我是R哥。
Spring AI 1.1.3 才发布多久啊:
Spring AI 1.1.3 正式发布,19 个新特性太顶了!
Spring AI 1.1.4 又发布了。。
除了 Spring AI 1.1.4,2.0.0 也来到了 M4 版本了,相信再过一阵子就要正式 GA 了,1.0.5 也发布了,大家可以根据自己的需要选择合适的版本。
说说主线版本 Spring AI 1.1.4 吧,这次一 ...
Mybatis基础操作
Mybatis基础使用
Mybatis编程式开发
mybatis和MySQL jar包依赖
<dependencies>
<!-- MyBatis 核心 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.10</version>
</dependency>
<!-- MySQL 驱动 -->
<dependency>
...
Spring Cloud Gateway实战:微服务API网关从零到一
前言
Spring Cloud Gateway 是 Spring 官方推出的 API 网关,基于 WebFlux 实现,性能卓越。本文带你从零搭建一个生产级的微服务 API 网关。
一、核心概念
Route(路由):网关的基本构建块,包含 ID、目标 URI、Predicate、Filter
Predicate(断言):匹配请求条件(路径、Header、参数等)
Filter(过滤器):对请求进行 ...
MyBatis-Plus实战:Spring Boot数据库操作效率提升10倍
前言
MyBatis-Plus(MP)是 MyBatis 的增强工具,无需编写 SQL 即可完成 CRUD 操作,极大提升开发效率。本文带你实战 Spring Boot 整合 MyBatis-Plus。
一、引入依赖
<!-- pom.xml -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.5</vers ...
Apache Kafka实战:Spring Boot消息队列完整指南
前言
Apache Kafka 是分布式消息队列的事实标准,本文带你实战 Spring Boot 整合 Kafka,完成生产者和消费者的完整开发。
一、Kafka 核心概念
Producer:消息生产者
Consumer:消息消费者
Broker:Kafka 服务节点
Topic:消息主题分类
Partition:Topic 的分区,实现并行处理
Consumer Group:消费者组,实现负载均衡
二 ...
Docker容器化部署实战:从零构建Spring Boot微服务镜像
前言
Docker 是现代微服务架构的基石。将 Spring Boot 应用容器化,可以实现一次构建,处处运行。本文带你从零完成 Spring Boot 应用的 Docker 容器化部署。
一、为什么需要 Docker
环境一致性:开发、测试、生产环境完全一致
快速部署:秒级启动,秒级扩容
资源隔离:每个容器独立运行,互不影响
CI/CD 友好:与 Jenkins/ ...
Kotlin协程实战:比Java线程更优雅的并发编程
前言
Kotlin 协程(Coroutines)是 Android 和服务端开发者的必备技能。相比 Java 线程,协程更轻量、更易读、更安全。本文带你从零掌握 Kotlin 协程的核心用法。
一、协程 vs 线程
线程:操作系统调度,创建成本高(约1MB栈内存)
协程:用户态调度,创建成本极低(约几KB),可创建数十万个
// Java 线程:10000个线程 ...
Java虚拟线程实战:Project Loom让并发编程更简单
前言
Java 21 正式引入虚拟线程(Virtual Threads),这是 Project Loom 的核心成果。虚拟线程让 Java 并发编程从"难"变"简",彻底改变了高并发应用的开发方式。本文带你全面掌握虚拟线程。
一、虚拟线程 vs 平台线程
平台线程:对应操作系统线程,创建成本高(约1MB栈内存),数量受限
虚拟线程:JVM 管理的轻量级线程, ...
用300行代码手写Spring核心原理
本文将带你深入了解Spring框架的核心原理,通过300行代码的迷你版本来展示Spring最核心的特性:IoC(控制反转)、DI(依赖注入)和MVC(模型-视图-控制器)模式的实现。
mini版Spring实现思路
实现过程
自定义注解
在Spring框架中,注解是非常重要的组成部分。我们的迷你版也实现了几个关键注解
// 控制器注解,标记控制器 ...
MVC中的拦截器实现案例
MVC 拦截器
Spring MVC 拦截器对应HandlerInterctor接口,该接口位于org.springframework.web.servlet的包中,定义了三个方法,若要实现该接口,就要实现其三个方法:
前置处理(preHandle()方法):该方法在执行控制器方法之前执行。返回值为Boolean类型,如果返回false,表示拦截请求,不再向下执行,如果返回true,表示 ...
Java学习笔记:关键字与保留字
在Java中,关键字和保留字是两类具有特殊意义的标识符,它们被语言本身占用,不能作为变量名、方法名、类名等自定义标识符使用。理解它们的区别与用途,是掌握Java语法的第一步。
查看官网关键字和保留字:
https://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html
1. 关键字(Keyword)
关键字是Java语 ...
MVC快速入门
前言
什么是MVC
MVC英文是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计规范,本质上也是一种解耦。
Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据。
View(视图)是应用程序中处理数据显示的部分。通常视图是依据模型数 ...
Java学习笔记:注释
1. 什么是注释?
注释(comment)。对Java程序中的代码进行文字性解释说明。不会被Java编译和运行。
2. Java注释
Java中的注释主要分为三类:
类型
语法
用途
单行注释
// 注释内容
对代码进行简短说明,编译时忽略
多行注释
/* 注释内容 */
可跨行,用于较长的解释或临时屏蔽代码块
文档注释
/** 注释内容 */
J ...
Java 中的 实现、泛型
上次我们聊了 Java 面向对象的三大特性,封装、继承、多态。今天我们来聊聊 实现、泛型。
一、实现(implements)
定义:"实现" 是 Java 中类与接口(Interface) 之间的关系,关键字是 implements。接口是一组 "行为规范"(只定义方法签名,不包含具体实现),而实现类需要兑现这些规范,即编写接口中所有抽象方 ...
Java学习笔记:开发初体验:HelloWorld
一般初学者开发第一个Java程序,我们习惯称之为:HelloWorld。
1. Java程序的开发步骤
Java程序开发一般分为三步:编写、编译、运行。
将Java代码编写到以.java结尾的源文件中。
通过javac.exe命令对源文件(.java)进行编译,编译后在当前源文件所在目录会自动生成一个或多个以.class结尾的字节码文件。
通过java.exe命令 ...
Spring Boot 4.0.5 正式发布,又一项技术被弃用了。。
大家好,我是R哥。
一周时间,Spring Boot 连发两个版本:
这版本速度也太快了吧,跟不上了,不过好在都是小版本更新,主要是一些 bug 修复和依赖升级,没什么大问题。
本次更新要点
Spring Boot 4.0.5 版本主要包含 17 个漏洞修复、文档改进和依赖升级,重点说说 Spring Boot 4.0.4 版本一些主要的更新要点。
1、ZipkinS ...
Netty 高性能网络编程:从零构建高并发服务器
前言
Netty 是一个高性能、异步事件驱动的网络应用框架,广泛应用于 RPC、消息队列、游戏服务器等高并发场景。本文从零开始,带你掌握 Netty 的核心概念和实战技巧。
一、为什么选择 Netty?
传统 Java NIO 的痛点:API 复杂,学习曲线陡峭;需要手动管理 Selector、Channel、Buffer;容易出现 bug;没有高层抽象,代码冗长 ...
CompletableFuture 实战:Java 异步编程高性能实战指南
前言
在高并发场景下,同步阻塞是性能杀手。Java 8 引入的 CompletableFuture 彻底改变了异步编程的写法。
一、为什么需要 CompletableFuture?
传统 Future 的痛点:
future.get() 会阻塞当前线程
无法链式组合多个异步任务
异常处理繁琐
二、基础用法
CompletableFuture<String> future = CompletableFuture.supplyAsyn ...