
Spring
文章平均质量分 93
椰椰椰耶
分享个人学习笔记,陪你一起学习~~~
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【Spring】SpringBoot自动注入原理分析,@SpringBootApplication、@EnableAutoConfiguration详解
SpringBoot自动配置原理摘要 SpringBoot自动配置的核心在于@SpringBootApplication注解,它组合了三个关键注解: @SpringBootConfiguration:标记当前类为配置类 @EnableAutoConfiguration:核心自动配置注解 @ComponentScan:包扫描功能 @EnableAutoConfiguration通过@Import导入AutoConfigurationImportSelector类,该类会扫描META-INF/spring.fa原创 2025-08-04 22:33:31 · 875 阅读 · 0 评论 -
【Spring】SpringBoot 自动配置,@ComponentScan、@Import、ImportSelector接口
SpringBoot自动配置原理摘要 SpringBoot自动配置通过自动加载依赖jar包中的配置类和Bean到IoC容器,简化了开发配置。核心原理包括: Spring加载Bean的方式: 默认扫描启动类同包路径 通过@ComponentScan扩展扫描路径 使用@Import直接导入配置类或ImportSelector实现类 自动配置实现机制: 第三方依赖提供@EnableXxx注解(内含@Import) 通过ImportSelector接口动态返回需要加载的配置类 避免手动配置,由依赖方自行管理所需Be原创 2025-08-04 22:31:02 · 975 阅读 · 0 评论 -
【Spring】Bean的生命周期,部分源码解释
Bean 生命周期概述 Bean 的生命周期包含 5 个阶段: 实例化:通过构造函数创建对象 属性赋值:完成依赖注入(如 @Autowired) 初始化: 执行 Aware 接口回调(BeanNameAware 等) 调用初始化方法(@PostConstruct、init-method) 执行 BeanPostProcessor 后置处理 使用 Bean 销毁:触发 @PreDestroy、DisposableBean 或 destroy-method 执行流程 源码通过 doCreateBean() 方法原创 2025-08-03 21:42:30 · 517 阅读 · 0 评论 -
【Spring】Bean的作用域(单例、多例、请求、会话、Application)
本文介绍了Spring中Bean的六种作用域及其使用场景。重点展示了单例(singleton)和原型(prototype)作用域的区别:单例模式下多次获取的是同一个实例,而原型模式每次都会创建新实例。通过代码示例演示了如何通过@Scope注解配置不同作用域,包括请求作用域(request)、会话作用域(session)和全局作用域(application)等Web环境特有的作用域。测试结果表明,单例作用域下对象地址相同,属性修改会相互影响;而原型作用域每次都会创建新对象。文章还提到Web环境特定作用域需要配原创 2025-08-03 21:41:58 · 623 阅读 · 0 评论 -
【Spring】日志配置、日志持久化、配置文件分割、日志格式
日志配置摘要 文章介绍了Spring Boot日志系统的配置方法,主要包括: 日志级别设置:通过logging.level配置不同级别的日志输出 日志持久化:支持配置文件名或目录两种方式将日志保存到文件 日志分割:设置文件大小阈值自动分割日志文件 日志格式:可自定义控制台和文件日志的显示格式 简化日志输出:使用Lombok的@Slf4j注解替代LoggerFactory.getLogger 关键配置项包括日志级别、文件路径、分割策略和输出格式等,支持通过application.yml灵活调整日志行为。文章还原创 2025-07-29 20:35:46 · 722 阅读 · 0 评论 -
【Spring】日志级别的分类和使用
日志级别用于区分信息的严重性,帮助开发者高效筛选关键日志。常见的级别从高到低依次为:FATAL(致命系统错误)、ERROR(高优先级错误)、WARN(警告)、INFO(常规信息)、DEBUG(调试)、TRACE(详细追踪)。SpringBoot默认使用Logback框架,其日志输出级别默认为INFO,因此仅显示INFO及以上级别的日志。开发人员需根据经验合理设置级别,错误的级别设定可能影响问题判断。FATAL级别表示系统不可用需紧急处理,而ERROR日志较多未必代表系统问题。原创 2025-07-29 20:35:13 · 760 阅读 · 0 评论 -
【Spring】日志框架介绍、门面模式和SLF4J框架介绍
SLF4J是一个日志门面框架,它通过门面模式为各种日志实现(如Log4j、Logback)提供统一的API接口。不同于具体日志实现,SLF4J只是一个抽象层,需要配合具体日志框架使用。门面模式通过定义高层接口简化了子系统(具体日志框架)的调用,具有降低系统耦合、提高灵活性和安全性的优点。使用SLF4J可以避免项目中多套日志框架共存带来的维护问题,使应用程序代码独立于具体日志实现。典型的日志输出包含时间、级别、进程ID、线程名、Logger名和日志内容等信息。原创 2025-07-28 09:01:56 · 907 阅读 · 0 评论 -
【Spring】日志的介绍和用途
日志是软件开发中重要的调试和分析工具,不仅用于定位问题,还具有系统监控、数据采集、安全审计等功能。相比简单的System.out.print,专业的日志框架如Slf4j能提供更丰富的日志信息。在SpringBoot项目中,可以通过LoggerFactory获取日志对象,使用info()等方法记录日志,为系统运维、数据分析和安全审计提供支持。日志能记录用户操作、系统状态等关键信息,有助于问题追溯、性能监控和合规审计,是项目开发中不可或缺的组成部分。原创 2025-07-26 09:35:43 · 750 阅读 · 0 评论 -
【Spring】事务传播机制使用各种场景演示
本文主要介绍了Spring事务的四种传播机制及其使用场景。重点讲解了REQUIRED和REQUIRES_NEW两种常用传播机制:REQUIRED是默认值,多个方法共享同一事务,任一方法异常会导致全部回滚;REQUIRES_NEW每次创建新事务,互不影响。此外还演示了NEVER(不支持事务)和NESTED(嵌套事务)的特性,特别是NESTED通过捕获异常可实现部分事务回滚,与REQUIRED的全局回滚形成对比。通过代码示例展示了不同传播机制下事务的执行效果,帮助理解Spring事务管理的核心机制。原创 2025-07-26 09:35:03 · 684 阅读 · 0 评论 -
【Spring】@Transcational的作用和使用细节、rollbackFor
Spring的@Transactional注解提供声明式事务管理,只需在方法或类上添加该注解即可自动管理事务:方法执行前开启事务,执行后提交事务,出现未捕获异常时回滚。文章通过用户注册示例演示了事务的基本使用,并指出异常捕获会导致事务提交而非回滚。介绍了两种回滚方式:重新抛出异常或手动调用setRollbackOnly()。重点解析了@Transactional的三个关键属性:rollbackFor(指定触发回滚的异常类型)、isolation(隔离级别)和propagation(传播机制),并通过代码示例原创 2025-07-25 09:40:03 · 711 阅读 · 0 评论 -
【Spring】事务的隔离级别,Spring的事务隔离级别和事务传播机制
本文回顾了MySQL的四种事务隔离级别(读未提交、读提交、可重复读、串行化),并介绍了Spring框架中的五种事务隔离级别和七种事务传播机制。MySQL的隔离级别解决了并发事务的数据一致性问题,而Spring的事务传播机制则处理了事务在方法调用间的传递行为。文章详细说明了每种传播机制的特点,如REQUIRED(默认)、REQUIRES_NEW(创建新事务)等,并通过源码展示了Spring中枚举类的实现方式。最后提到可以通过@Transactional注解的isolation和propagation属性来设置原创 2025-07-25 09:39:47 · 681 阅读 · 0 评论 -
【Spring】什么是事务,Spring中事务的实现
Spring事务管理摘要:事务是数据库操作的不可分割单元,确保一组操作同时成功或失败。Spring提供编程式和声明式事务管理,前者手动控制事务,后者通过注解自动处理。本文以用户注册为例,演示了事务的必要性(如转账、秒杀系统),并展示了Spring事务的实现方式,包括数据准备、代码示例及事务操作步骤(开启/提交/回滚)。原创 2025-07-24 11:15:04 · 810 阅读 · 0 评论 -
【Spring AOP】execution表达式,@annotation注解,@MyAspect(自定义注解),切面类
本文介绍了AOP切点表达式的两种主要语法:execution表达式和@annotation表达式。execution表达式通过方法签名匹配,语法包含访问修饰符、返回类型、包名类名方法名及参数等元素,支持通配符*和..进行灵活匹配,并提供了多个示例。@annotation表达式则通过自定义注解匹配无规则方法,详细说明了自定义注解的创建、切面类定义及注解使用步骤。两种方式各有适用场景,execution适合有规则的方法匹配,@annotation适合分散的无规则方法匹配。文章还简要提及了Spring AOP的实原创 2025-07-15 17:20:13 · 542 阅读 · 1 评论 -
【Spring AOP】通知类型,@Pointcut、@Order(切面优先级)
Spring AOP 通知类型与切面实践 本文介绍了Spring AOP的五种通知类型: @Around环绕通知(目标方法前后执行) @Before前置通知(方法前执行) @After后置通知(方法后执行,无论异常) @AfterReturning返回后通知(正常返回后执行) @AfterThrowing异常通知(出现异常后执行) 通过代码示例演示了各种通知的执行顺序和异常场景下的差异,并介绍了@Pointcut注解提取公共切点表达式的方法,以及使用@Order控制多个切面执行顺序的技巧。关键注意点包括环绕原创 2025-07-13 16:21:32 · 435 阅读 · 1 评论 -
【Spring AOP】什么是AOP?切点、连接点、通知和切面
AOP 概述与 Spring AOP 详解 AOP(面向切面编程)是 Spring 框架的第二大核心,是一种面向特定方法编程的思想,通过集中处理某一类问题实现解耦。Spring AOP 是其一种实现方式,相比拦截器能更细致地拦截方法(按包、类、方法等),典型应用如接口耗时统计。 核心概念 切点(Pointcut):定义拦截规则的表达式(如 execution(* com.example.controller.*.*(..)))。 连接点(Join Point):满足切点表达式的方法(如 Controller原创 2025-07-12 18:02:11 · 2029 阅读 · 26 评论 -
【Spring】拦截器详解
摘要:本文介绍了Spring拦截器在实现强制登录功能中的应用。传统方法需要在每个接口中校验Session,导致代码重复且维护困难。通过拦截器可以统一拦截请求并进行Session校验,简化开发流程。文章详细讲解了拦截器的定义(实现HandlerInterceptor接口)、配置(注册路径规则)以及执行流程(preHandle/postHandle/afterCompletion)。特别展示了如何用拦截器实现登录校验功能,通过检查Session中的用户信息来决定是否放行请求。这种方案相比传统方法更加高效、可维护原创 2025-07-11 17:28:35 · 1405 阅读 · 11 评论 -
【Spring】应用分层,MVC和三层架构的区别和联系,高内聚低耦合
应用分层是一种软件设计思想,将系统划分为不同层次,各层职责明确,协同工作。早期项目通常不分层,但随着业务复杂度增加,会出现逻辑混乱、模块依赖等问题。常见的分层方式包括MVC模式(模型、视图、控制器)和三层次架构(表现层、业务逻辑层、数据层)。二者目标一致,强调高内聚低耦合,但角度不同:MVC侧重数据与视图分离,三层次架构注重各层解耦。分层的好处包括降低依赖、提升复用性、便于维护和标准化开发。企业开发中还需遵循命名规范,如类名用大驼峰、方法名用小驼峰等,确保代码统一性。原创 2025-06-23 10:19:58 · 645 阅读 · 0 评论 -
【Spring IoC】容器和IoC介绍以及IoC程序开发的优势
容器是用来容纳某种物品的(基本)装置。生活中的水杯,垃圾桶,冰箱等等这些都是容器。我们想象,之前的内容中我们接触到了哪些容器?List/Map:数据存储容器Tomcat:Web 容器IoC是Spring的核心思想,也是常见的面试题。其实我们在前面已经使用过了IoC,在类上面添加注解,就是把这个对象交给Spring管理,Spring框架启动时就会加载该类。把对象交给Spring管理,就是IoC思想。原创 2024-11-01 22:17:05 · 3306 阅读 · 46 评论 -
【Spring】Spring实现加法计算器和用户登录
约定“前后端交互接口”是进行 Web 开发中的关键环节。接口又叫API),我们一般讲到接口或者API,指的都是同一个东西是指应用程序对外提供的服务的描述,用于交换信息和执行任务(与JavaSE中学习的类和接口是两回事)。简单来说,就是允许客户端给服务器发送哪些HTTP请求,并且每种请求预期获取什么样的HTTP响应。现在“前后端分离”模式开发,前端和后端的代码通常由不同的团队负责开发,双方团队在开发之前,会提前约定好交互的方式客户端发起请求服务器提供对应的服务。原创 2024-10-16 21:48:50 · 2567 阅读 · 45 评论 -
【Spring】获取Cookie和Session(@CookieValue()和@SessionAttribute())
这是没有Spring的时候,用Servlet来获取(获取所有的 Cookie)Spring MVCWebServletHTTPHTTPHTTPHTTPSpringCookie是一个数组,所以进行循环打印进入网页后,Cookie可以直接进行修改(F12然后在里面添加信息,name=bitevalue=666,随后保存之后刷新,可在服务端看到Cookie信息Spring MVCWebServletServletSpring MVCHTTPHTTPHTTPSpring MVC。原创 2024-10-13 20:54:22 · 2785 阅读 · 49 评论 -
【Spring】Cookie和Session是什么
HTTP 协议自身是属于“”协议但是在实际开发中,我们很多时候是需要知道请求之间的关联关系的上述图片中的“令牌”通常就存储在Cookie字段中此时在服务器这边就需要记录“令牌”的信息,以及令牌对应的用户信息,这个就是Session机制所做的工作。原创 2024-10-12 18:30:40 · 2765 阅读 · 77 评论 -
【Spring】“请求“ 之后端传参重命名,传递数组、集合,@PathVariable,@RequestPart
某些特殊情况下,前端传递的参数key和我们后端接收的key可以不一致,比如前端传了一个time给后端,而后端是使用createtime字段来接收的,这样就会出现参数接收不到的情况,如果出现这种情况,我们就可以使用来重命名前后端的参数值Springtimecreatetimecreatetimetime。原创 2024-10-07 11:42:32 · 6116 阅读 · 13 评论 -
【Spring】“请求“ 之传递 JSON 数据
JSON 就是一种数据格式,有自己的格式和语法,使用文本表示一个对象或数组的信息,因此 JSON 本质是字符串,主要负责在不同的语言中数据传递和交换。JSON 是一个字符串,其格式非常类似于 JavaScript 对象字面量的格式。基于以上特点,JSON 在 Web 应用程序中被广泛使用,如前后端交互,API 接口数据传输等。框架中已经把该工具包引入了进来,我们可以直接进行使用。开发者能更快的上手而已,但是他的语法本身比较简单,所以也很好学。的转换工具,我们可以直接使用,来完成。没有关系,只是语法类似,原创 2024-10-06 16:55:50 · 10373 阅读 · 67 评论 -
【Spring】“请求“ 之传递单个参数、传递多个参数和传递对象
访问不同的路径,就是发送不同的请求。在发送请求时,可能会带一些参数,所以学习 Spring 的请求,主要是学习如何传递参数到后端,以及后端如何接收传递参数,我们主要是使用浏览器和 Postman 来模拟后端开发人员无需太过于关注如何传递参数,了解即可,实际开发中以 Postman 测试为主比如餐厅的厨师,不关注用户是在店里下单还是外卖平台下单,只需要知道如何让接受订单,根据订单做出对应的菜肴就可以了。原创 2024-10-06 14:36:03 · 7535 阅读 · 41 评论 -
【Spring】@RequestMapping、@RestController和Postman
是 Spring Web MVC 引用程序中最常被用到的注解之一,它是用来注册接口的路由映射的,表示服务收到请求时,路径为/sayHello的请求就会调用sayHi这个方法的代码:当用户访问一个 URL 时,将用户的请求对应到程序中某个类的某个方法的过程就叫路由映射既然已经可以达到我们的目的了,我们为什么还要加呢?404一个项目中,会有很多类,每个类可能会有很多的方法,Spring 程序怎么知道要执行哪个方法呢?原创 2024-10-04 14:02:05 · 11394 阅读 · 44 评论 -
【Spring】Spring MVC的项目准备和连接建立
MVC 是 Model View Controller 的缩写,它是软件工程中的一种软件架构设计模式,它把软件系统分为:模型、视图和控制器三个部分View(视图):指在应用程序中专门用来与浏览器进行交互,展示数据的资源Model(模型):是应用程序的主体部分,用来处理程序中数据逻辑的部分Controller(控制器):可以理解为一个分发器,用来决定视图发来的请求,需要用哪一个模型来处理,以及处理完后需要跳回哪一个视图。即用来连接视图和模型我们去饭店吃饭,我们坐下,服务员让我们点单。原创 2024-10-04 13:59:06 · 8755 阅读 · 37 评论 -
【Spring】运行Spring Boot项目,请求响应流程分析以及404和500报错
是为了快速开发Spring而诞生的,提供了启动添加依赖的功能,可以快速集成框架内置web服务器,无需配置Tomcat等web服务器,直接运行和部署程序可以完全抛弃繁琐的XML,使用注解和配置的方式进行开发支持更多的监控的指标,可以更好的了解项目的运行情况等特点可使用IDEA或网页创建,它的设计思想是约定大于配置,类上标注就可以启动项目了。原创 2024-10-03 20:39:39 · 11440 阅读 · 58 评论 -
【Spring】Spring Boot项目创建和目录介绍
Spring 让 Java 程序更加快速、简单和安全,Spring 对于速度、简单性和生产力的关注使其成为世界上最流行的 Java 框架Spring 官方提供了很多开源的项目,覆盖范围从 Web 开发到大数据,Spring 发展到了今天,已经形成了自己的生态圈,我们在开发时,也倾向于使用 Spring 官方提供的技术来解决对应的问题。原创 2024-10-03 10:30:58 · 10583 阅读 · 42 评论