
SpringBoot实战与源码分析
文章平均质量分 95
SpringBoot实战与源码分析
魔道不误砍柴功
我亦无它,唯手熟尔!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【硬核干货】Java开发者必知的10个高效编程技巧与避坑指南
掌握这些Java编程技巧,你的代码将:✅ 更健壮 - 减少NPE和并发问题✅ 更高效 - 提升性能表现✅ 更简洁 - 减少样板代码✅ 更易维护 - 提高可读性记住,优秀的Java开发者不仅要让代码能运行,更要让代码优雅高效!💯互动时间:你平时最常用的Java技巧是什么?或者遇到过哪些Java坑?欢迎在评论区分享!👇📢下期预告:《深入理解Java虚拟机:从字节码到性能调优》敬请期待!你的支持是我创作的最大动力!原创 2025-04-18 21:14:48 · 686 阅读 · 0 评论 -
2024年Java生态重磅更新盘点:从JDK 24到Ktor 3.0的技术盛宴
JDK 24:适合开发环境尝鲜新特性,特别是字符串模板和向量APITomcat 11:新项目建议直接使用,注意Jakarta命名空间变更:需要强一致性和AI集成的场景首选:复杂对象持久化的轻量级解决方案:企业级Java EE/微服务应用的可靠选择Ktor 3.0:Kotlin后端开发的现代化框架2024年的Java生态依然充满活力,这些更新为我们提供了更强大的工具和更高的性能。建议根据项目需求选择合适的升级路径,小步快跑式地采用新技术。你对哪个更新最感兴趣?在评论区告诉我吧!原创 2025-04-18 21:12:52 · 943 阅读 · 0 评论 -
Spring Boot自动配置原理深度解析:从条件注解到spring.factories
想象一下,你刚搬进一个新家🏠。如果是传统Spring,你需要自己买家具、安装电器、布置每个房间。而Spring Boot就像一家提供"精装修"服务的公司——当你搬进去时,冰箱🍔、洗衣机👕、电视📺都已经安装好了,而且都是根据你的生活习惯智能选择的!这就是自动配置的魔力✨——它根据你项目中的依赖和配置,自动为你配置好Spring应用所需的大部分组件。理解了原理后,让我们动手创建一个自定义的Spring Boot Starter!使用触发自动配置过程通过发现所有潜在的自动配置类。原创 2025-04-18 21:10:19 · 1297 阅读 · 0 评论 -
Spring Boot Starter设计思想:如何像搭积木一样玩转Java开发?(超详细解析)
统一的安全配置公共的日志处理公司内部的中间件连接通用的工具类集合Spring Boot Starter的设计思想真是Java开发者的福音啊!标准化依赖管理:不再担心版本冲突模块化设计:像搭积木一样组合功能自动配置:开箱即用的最佳实践灵活扩展:轻松自定义和覆盖更细粒度的模块划分更智能的自动配置更好的云环境适配更强大的扩展机制。原创 2025-04-18 21:05:44 · 957 阅读 · 0 评论 -
Spring Boot 配置全攻略:properties vs. YAML vs. 环境变量(超详细版)
应用配置app.name=我的SpringBoot应用# 数据库配置键=值,一行一个配置,号开头的是注释。YAML(发音"亚麻尔")是比 properties 更现代的结构化格式👶,全称是 “YAML Ain’t Markup Language”(递归缩写,程序员就爱玩这种梗😆)。app:name: 我的SpringBoot应用db:看出来了吗?用缩进表示层级关系,比 properties 更结构化!原创 2025-04-18 21:05:10 · 1008 阅读 · 0 评论 -
从零开始解剖Spring Boot启动流程:一个Java小白的奇幻冒险之旅
Bean});哇!我们终于走完了Spring Boot的整个启动流程!main()方法是入口,调用SpringApplication初始化时会确定应用类型、加载初始化和监听器run()方法是核心,完成了环境准备、上下文创建和刷新刷新上下文是最复杂的部分,完成了Bean工厂准备、自动配置、Bean注册等内嵌Tomcat在刷新阶段被创建和启动自动配置通过条件注解智能地配置应用Spring Boot的启动过程就像是一个精密的瑞士手表⌚,各个部件协同工作,最终让我们的应用顺利运行。原创 2025-04-18 21:04:43 · 953 阅读 · 0 评论 -
Spring Boot 核心注解全解:@SpringBootApplication背后的三剑客
是Spring Boot特有的配置注解,它实际上是注解的"加强版"💪。从代码可以看出,它本质上就是一个,但加上了Spring Boot的特殊标识。你也可以创建自己的自动配置!创建文件写入你的配置类全限定名使用系列注解控制条件// ...排除特定自动配置:如测试时排除安全配置精细控制扫描:只扫描必要的包提高性能组合使用:可以同时使用这三个注解进行更细粒度控制没有放在组件扫描的路径下类上没有加或相关注解被其他配置覆盖了检查包结构添加使用@Order调整顺序。原创 2025-04-18 21:04:13 · 1008 阅读 · 0 评论 -
Spring Boot 依赖注入与Bean管理:JavaConfig如何取代XML?
想象一下,你是一个小厨师👨🍳,要做一道美味的番茄炒蛋🍳。你需要什么呢?需要番茄、鸡蛋、油、盐对吧?这些"材料"就是你的"依赖"!传统方式:你自己去菜市场买番茄、去养鸡场找鸡蛋、去超市买油和盐…累不累?😫依赖注入方式:有个神奇的冰箱(Spring容器),里面已经准备好了所有材料,你只需要说"我要做番茄炒蛋",冰箱就自动把材料给你准备好!太方便了吧!😍// 传统方式:自己创建所有依赖// 依赖注入方式:告诉Spring你需要什么,它自动给你@Autowired。原创 2025-04-18 21:03:43 · 1034 阅读 · 0 评论 -
Spring Boot 热部署实战:DevTools与JRebel原理对比(超详细保姆级教程)
想象一下,你正在写作业(代码),每次写完一小段就要把作业本合上(重启应用),然后再打开检查效果。是不是很烦?😫 热部署就是让你不用合上作业本,直接就能看到修改后的效果!专业点说:**热部署(Hot Deployment)**是指在不重启应用的情况下,动态更新类或资源文件,使改动立即生效的技术。经过这么详细的对比,相信大家对两种热部署方案都有了深刻理解。最后给出我的个人建议选择DevTools如果项目规模不大预算有限主要进行业务逻辑开发可以接受轻微的重启延迟选择JRebel如果项目复杂庞大。原创 2025-04-18 21:02:55 · 1404 阅读 · 0 评论 -
Spring Boot配置文件优先级全解析:如何优雅覆盖默认配置?
如果你想玩点高级的,可以实现自己的@Overridereturn "我是自定义属性值";@Autowired这样你就可以用获取自定义属性啦!🎩✨优先级配置来源示例适用场景最高命令行参数临时测试、运维调整↑环境变量容器部署、敏感信息↑外部配置文件生产环境配置↓jar内配置文件默认配置、开发环境最低默认属性框架默认值“命环外jar默认”(命令行>环境变量>外部文件>jar内文件>默认)!🗣️恭喜你!🎊 现在你已经完全掌握了Spring Boot配置文件优先级的精髓!原创 2025-04-18 21:02:30 · 1247 阅读 · 0 评论 -
Spring Boot日志系统详解:Logback与SLF4J的默认集成
SLF4J(Simple Logging Facade for Java)就像是日志系统的"遥控器"📱,它定义了一套统一的日志接口,但不负责具体的日志实现。解耦🔗:你的代码只依赖SLF4J接口,不关心底层用哪种日志实现灵活🤸:可以随时更换底层日志框架而不需要修改代码统一🔄:所有日志都通过同一个接口输出// 通过SLF4J获取Loggerlogger.info("这是一条信息日志");logger.error("这是一条错误日志");原创 2025-04-18 21:02:07 · 1012 阅读 · 0 评论 -
《Spring Boot 测试框架指南:@SpringBootTest与Mockito的最佳实践》
SpringBootTest就像是给你的Spring Boot应用做全身检查👨⚕️。它会启动几乎整个应用上下文,包括所有的bean、配置、数据库连接等等。@Autowired// 可以自动注入真实的bean@Test创建虚拟对象(模拟对象)定义这些对象的行为验证它们是否被正确调用为什么需要Mockito?因为单元测试应该独立!我们不希望测试UserService时,真的去调用数据库或第三方API。// 当调用findById(1L)时,返回预设的用户。原创 2025-04-18 21:01:29 · 1319 阅读 · 0 评论 -
干货合集:Spring Boot 使用技巧,让你的开发效率飙升!
Spring Boot 作为 Java 开发的 “开箱即用” 框架,以其便捷性和强大的功能广受欢迎。然而,很多开发者在使用中可能只停留在“能用”的阶段,未能挖掘出它真正的潜力。今天就带你解锁一些 Spring Boot 的实用技巧,提升开发效率,避免踩坑!Spring Boot 提供了强大的 profile 功能,可以为不同的环境(开发、测试、生产)设置不同的配置。在 或 中定义默认配置。创建不同环境的配置文件,例如:启动时通过 指定激活的环境:进阶技巧默认激活某个环境:合并配原创 2024-11-21 21:29:47 · 1727 阅读 · 7 评论 -
Spring Boot中的自动装配机制
自动装配是Spring框架提供的一种机制,它允许Spring容器在启动时自动检测并注册应用中的组件,同时自动注入这些组件的依赖关系。在Spring Boot中,自动装配更是被发挥到了极致,它不仅包括了传统的依赖注入,还包括了自动配置(Auto-configuration)。Spring Boot中的自动装配机制是一个强大的工具,它可以帮助你快速启动和运行Spring应用,同时减少配置的复杂性。通过理解自动装配的工作原理和注意事项,你可以更好地利用这个机制,让你的Spring应用更加灵活和强大。原创 2024-11-13 22:21:45 · 1373 阅读 · 0 评论 -
探秘Spring Boot中的@Conditional注解
是Spring框架中的一个注解,它的主要作用是根据特定的条件来决定是否加载某个Bean或者执行某个配置。简单来说,就是你可以通过这个注解告诉Spring:“如果满足某个条件,那么请加载这个Bean;如果不满足,就忽略它。注解是Spring Boot中一个非常强大的工具,它可以帮助我们根据条件来动态地加载Bean,从而实现配置的灵活性和可扩展性。掌握的使用,会让你的Spring Boot应用更加灵活和强大。希望这篇文章能帮助你更好地理解和使用注解。原创 2024-11-13 22:17:32 · 1399 阅读 · 0 评论 -
简单叙述 Spring Boot 启动过程
启动入口:调用,启动流程。创建 SpringApplication 对象:做启动前的准备。配置环境:识别开发环境与生产环境。启动监听器和初始化器:处理关键事件。创建 ApplicationContext 容器:加载 Bean。自动配置:根据依赖自动加载相关配置。启动 Web 服务器:若是 Web 项目,启动内嵌服务器。执行 CommandLineRunner / ApplicationRunner:启动后执行收尾工作。启动完成:应用准备好,开始接收请求。原创 2024-11-13 22:16:46 · 1464 阅读 · 1 评论 -
解锁 Spring Boot 的隐藏技能:让开发更轻松的实用技巧!
你可以通过创建banner.txt文件在 Spring Boot 启动时显示个性化的 Banner 信息,把它放在下即可。____ _ _ _还可以在让项目启动也能充满乐趣和个性。.run(args);通过这种方式,可以在代码层面控制 Spring Boot 应用的启动参数,适合一些灵活的需求。Spring Boot 提供了非常多的实用工具和灵活配置,以上技巧只是冰山一角。通过掌握这些技巧,可以更轻松地实现开发需求,并有效提高项目的效率。原创 2024-11-11 22:32:18 · 1045 阅读 · 2 评论 -
为何选择 @ConfigurationProperties?一次体验让我爱不释手!
带来的好处,尤其在项目复杂度提升、配置项增加后愈发明显。它让我们可以优雅地管理配置项,保持代码简洁和可维护性;同时通过类型安全和嵌套支持,将配置结构在代码中完美映射。掌握了,你的配置管理将更上一层楼,再也不必为复杂配置而发愁!原创 2024-10-26 22:16:10 · 1176 阅读 · 7 评论 -
Spring Boot 自动装配:让开发“偷懒”也能高效!
Spring Boot 自动装配帮助我们告别了复杂的配置过程,为开发提供了极大的便利。但自动装配就像是一把双刃剑,它在简化开发的同时,也增加了一些隐形的复杂性。它会根据项目引入的依赖,自动扫描和配置合适的 Bean,而不用我们一行行写配置文件。后,自动装配会根据 JPA 的配置帮助我们初始化数据库,连事务管理也不需要额外操心了。虽然自动装配很强大,但有时候我们希望自己定制化 Bean 装配,或者屏蔽某些不需要的配置。希望大家能通过 Spring Boot 的自动装配“偷懒”,用更少的代码写出更高效的项目!原创 2024-10-26 22:13:53 · 573 阅读 · 0 评论 -
如何自定义一个自己的 Spring Boot Starter 组件(从入门到实践)
Spring Boot Starter 是一组 Maven 依赖的集合,旨在简化 Spring Boot 应用的配置。每个 Starter 通常包括所需的库、自动配置类、属性文件等,使得开发者只需简单地添加一个 Starter,就可以快速启动所需的功能。例如,包含了构建 Web 应用所需的所有依赖,包括 Spring MVC、Jackson 等。复用性:将常用的功能封装为 Starter,方便在多个项目中复用。简化配置:将复杂的配置和依赖管理集中处理,减少每个项目中的重复配置。团队协作。原创 2024-10-22 21:41:00 · 2949 阅读 · 23 评论 -
由 Spring 静态注入引发的一个线上T0级别事故(真的以后得避坑)
避免静态字段注入,使用实例字段(推荐)使用注解初始化使用静态 setter 方法来注入静态依赖使用ApplicationContext 手动获取依赖通过单例模式访问非静态依赖使用 @Lazy注解懒加载依赖以上每种方法都有其适用场景,具体选择可以根据项目的需求和设计模式来决定。ε=(´ο`*)))唉,希望此文可以帮助大家踩坑时避坑吧。。。原创 2024-10-21 21:52:15 · 1554 阅读 · 0 评论 -
Spring 之 @EnableAspectJAutoProxy 简单使用和源码分析
注意这个类又什么特点呢?可以看出这个类是 Spring BeanPostProcessor 接口的应用。BeanPostProcessor 接口设计非常灵活。这里主要关注#postProcessAfterInstantiation() 方法,因为主要逻辑在这个方法里面。这个抽象类把公共的核心逻辑写好,子类只需要重写其中的一些方法即可,这其实是模版设计模式的一种体现。if(bean!= null) {原创 2022-12-31 19:39:55 · 4983 阅读 · 2 评论 -
Spring 之 @Cacheable 缓存使用教程
该抽象类提供 loadCaches() 方法,可以获取到所有 Cache 接口实现类。所以这里能够获取到所有缓存。那么肯定是可以使用双缓存。/*** 直接实现 AbstractCacheManager 抽象类的钩子方法,该类已经写好模版方法* 当执行的时候,如果 MyGuavaCacheManager 管理类 @Bean 的话,就会勾到这个方法逻辑* @return} }} }最终通过注入一个缓存管理类 MySimpleCacheManager 就可以使用到三个缓存。原创 2023-01-18 13:20:22 · 5460 阅读 · 2 评论 -
Servlet 生命周期详解及案例演示(SpringMVC底层实现)
Servlet是运行在服务器端的Java程序,用于处理客户端的HTTP请求,并生成响应。在Web应用程序中,它就像是服务员,接收来自用户的点单(请求),然后将结果返回给用户。初始化(init方法)请求处理(service方法)销毁(destroy方法)我们将通过简明的语言和代码示例来解释每个阶段。当客户端第一次访问Servlet时,服务器加载该Servlet并调用init()方法进行初始化。每次客户端发出请求时,Servlet通过service()方法调用doGet()或doPost()原创 2024-10-18 22:33:28 · 1235 阅读 · 0 评论 -
在 Spring 中使用 @EhCache 注解作为缓存
Spring 有一个内置的 EhCache 缓存管理器。这适用于大多数缓存情况,但我发现定义自定义缓存管理器非常有用,因为它允许我使用相同的缓存管理器以编程方式或通过注释控制缓存。本文重点介绍 annotations,但让我们继续定义一个自定义缓存管理器,以便在需要时做好准备。如果您更喜欢坚持使用 默认缓存管理器 ,您可以跳过此步骤。我们将在 :super();原创 2024-10-15 22:00:43 · 1870 阅读 · 1 评论 -
使用 Spring 框架构建 MVC 应用程序:初学者教程
Spring 是一个多功能框架,允许构建 MVC 应用程序。使用 Spring 构建一个简单的应用程序既快速又透明。该应用程序还可以使用 JPA 轻松与数据库集成。GitHub该篇文章中使用到Demo源码整个项目的源代码。原创 2024-10-15 21:42:49 · 1291 阅读 · 0 评论 -
SpringBoot 整合 JSP、Thymeleaf 、Freemarker 详细步骤
更早版本是实现 WebMvcConfigurerAdapter 类,但是现在已经过期,推荐使用接口,缺少那部分功能就添加对应功能即可。MvcConfig} }在这里自定义两个组件,一个是视图解析器组件,一个是静态资源解析组件。注解默认是没有打开静态资源解析,需手动开启,通过 addResourceHandlers() 方法添加需解析的静态资源。其中/**表示访问静态资源时,不限制访问层级目录。原创 2023-02-07 11:30:14 · 1423 阅读 · 0 评论 -
SpringBoot 之自动装配简单使用
其实归根结底还是Spring 的 SpringFactoriesLoader 工厂加载机制 + @Import(DeferredImportSelector)实现的,之前说配置文件必须写死 META-INF/spring.factories 规范也就是 Spring 的 SpringFactoriesLoader 规范。上升到 SpringBoot 就完美利用这两点功能实现了自动装配。然后 SpringBoot 将 @EnableXxx 各式各类注解统一命名成 @简单明了!这也就是为什么。原创 2022-12-28 14:45:39 · 1864 阅读 · 0 评论 -
Spring 之 @Import 注解使用与源码浅析
再说 @Import 之前先回忆下 @Component 的作用,在类上标注该注解,该类就能够被 Spring 扫描封装成 BeanDefinition 并注册到容器中。但现在需要将第三方 jar 包、或者其他路径下面的包中的类也要被扫描注册呢?原创 2022-12-27 16:12:02 · 1008 阅读 · 0 评论 -
SpringCloud整合Apollo配置中心完整方案
相关资料GitHub快速入门ApolloApollo Quick Start Docker部署Apollo分布式部署指南Java客户端使用指南Apollo Meta ServerApollo配置中心设计Apollo配置中心架构剖析预备环境首先得检查你的服务器上环境的要求是否一致,若不一致会带来不必要麻烦,一样就可以很轻松的搭建好apollo配置中心。Linux Centos7MySQL8.0SpringBoot2.0+ (推荐)JDK1.8+ Oracle默认账号/密码26966原创 2021-07-11 14:51:44 · 3764 阅读 · 0 评论 -
SpringBoot 启动原理详细解析
Springboot 启动类从下面代码可以看出,Annotation定义(@SpringBootApplication)和类定义(SpringApplication.run)最为耀眼,所以要深入SpringBoot就得从这两个处入手。SpringBootApplication背后的秘密@SpringBootApplication注解是Spring Boot的核心注解,它其实是一个组合注解:虽然定义使用了多个Annotation进行了原信息标注,但实际上重要的只有三个Annotation:@C转载 2021-03-07 14:38:40 · 578 阅读 · 0 评论 -
SpringBoot 进阶学习
文章目录走向自动装配Spring模式注解模式注解举例装配方式 (@ComponentScan方式装配bean)Spring @Enable模块装配@Enable 注解模块举例@Enable模式注解的实现方式注解驱动方式接口编程方式自定义@Enable 模块基于注解驱动实现 `@EnableHelloworld` 直接配置XXXConfiguration类基于接口编程实现 `@EnableHelloworld` (实现ImportSelector 接口)Spring条件装配条件注解举例实现方式注解配置方式原创 2021-02-26 02:13:26 · 1741 阅读 · 0 评论 -
【SpringBoot】@Value读取properties作为map或list
Spring读取properties作为map和List:application.properties文件中:blog-top-links={home:"/home"}blog-list=1,2,3map的写法和json差不多,但是应该不支持嵌套,没有尝试。key加不加引号都可以,value加双引号单引号都可以,但是当key中有”-“时就必须加引号,例如key为:about-me时...原创 2019-10-31 16:44:32 · 8005 阅读 · 1 评论 -
spring boot创建多模块项目
1:先创建一个聚合工程parent<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.o...原创 2018-03-01 18:18:09 · 2047 阅读 · 0 评论 -
springboot使用shiro-整合redis作为缓存(十)
原文地址,转载请注明出处: https://blog.csdn.net/qq_34021712/article/details/80774649 ©王赛超 说在前面本来的整合过程是顺着博客的顺序来的,越往下,集成的越多,由于之前是使用ehcache缓存,现在改为redis,限制登录人数 以及 限制登录次数等 都需要改动,本篇为了简单,目前先将这两个功能下线,配置暂时是注销的,原类保存...转载 2018-12-27 14:21:05 · 1209 阅读 · 0 评论 -
springboot报错说 Failed to parse multipart servlet request; nested exception is java.io.IOException
问题:一次开发中遇到一个springboot的异常,如下所示:Failed to parse multipart servlet request; nested exception is java.io.IOException: The temporary upload location [/tmp/tomcat.1428942566812653608 二、分析原因1.该异常是...原创 2018-12-07 00:33:17 · 126569 阅读 · 8 评论