图源:简书 (jianshu.com) 什么是循环依赖 我们看一个例子: @Component public class Person { private Dog pet; public Person(Dog pet) { this.pet = pet; } } @Component public class Dog { private Person owner; public Dog(Person owner) { this.owner = ow…
图源:简书 (jianshu.com) 什么是循环依赖 我们看一个例子: @Component public class Person { private Dog pet; public Person(Dog pet) { this.pet = pet; } } @Component public class Dog { private Person owner; public Dog(Person owner) { this.owner = ow…
图源:简书 (jianshu.com) 在之前的文章中,我详细介绍了 Lombok 的用法,考虑到在 Spring 中使用依赖注入(DI)是如此的频繁,因此有必要讨论使用 Lombok 时可能对依赖注入造成的影响。 我们都知道,Spring 中的依赖注入分为三种情况: 通过属性进行依赖注入。 通过构造器进行依赖注入。 通过 Setter 进行依赖注入。 通过属性进行依赖注入并不会影响我们使用 Lombok,比如: @RestController @RequestMapping("/hello") @Validate…
图源:简书 (jianshu.com) 从前文可以知道,作为 Ioc 容器的 ApplicationContext,需要进行一系列步骤来初始化以最终就绪(对于 Web 应用来说就是可以提供Http服务)。 这些步骤大概可以分为以下内容: 准备上下文关联的Environment。 初始化 ApplicationContext(ApplicationContextInitializers被调用)。 加载 Bean 定义(通过注解或XML)。 刷新容器。 就绪。 Application 事件 Spring 用一系列事件来…
图源:简书 (jianshu.com) 在前面一篇文章从零开始 Spring Boot 27:IoC中,讨论过依赖注入集合(Java 容器)的内容,这里更深入地讨论注入集合的相关内容。 我们来看一个最基本的集合注入示例: public record BookCategory(String name) { } @Configuration public class WebConfig { //文学 //文学理论 @Bean BookCategory literaryTheory() { …
图源:简书 (jianshu.com) Lombok是一个java项目,旨在帮助开发者减少一些“模板代码”。其具体方式是在Java代码生成字节码(class文件)时,根据你添加的相关Lombok注解或类来“自动”添加和生成相应的字节码,以补完代码所需的“模板代码”。 实际上 Lombok 和 Spring 并没有关联关系,你开发任何Java应用都可以选择使用 Lombok,只不过日常的 Spring 开发中很容易看到 Lombok 的使用,所以这里就归类到这个系列博客。 为什么要使用 Lombok 我们先看一个Sp…
图源:简书 (jianshu.com) 在从零开始 Spring Boot 10:日志 - 红茶的个人站点 (icexmoon.cn)中,我简单介绍过如何在Spring Boot中整合SLF4J日志。实际上,如果没有特殊需求,完全可以不使用第三方日志,就使用Spring Boot的默认日志功能,这样在配置上会省很多事。下面介绍Spring Boot默认使用的 logback 日志功能。 日志格式 Spring Boot的默认的日志输出格式类似于下面的例子: 2023-03-03T21:18:18.827+08:00…
图源:简书 (jianshu.com) Null-safety(null安全)实际上是Java这个“古老”语言的历史包袱,很多新的语言(比如go或kotlin)在诞生起就在语言层面提供对null安全的解决方案。 实际工作中有相当一部分bug都是“空指针异常”。 Spring框架提供一些注解作为null安全这一问题的解决方案,可以通过在Spring框架中使用这些注解来在编码阶段尽早发现一部分“空指针异常”引起的bug。 Spring框架提供以下注解: @Nullable: 注解,表明一个特定的参数、返回值或字段可以是…
图源:简书 (jianshu.com) 之前写过一篇文章从零开始 Spring Boot 26:AOP - 红茶的个人站点 (icexmoon.cn),讨论了AOP的基本用法,但那篇文章相当粗疏,对Spring中的AOP技术讨论并不全面,所以这里在本篇文章中,将基于Spring官方文档的内容,全面讨论Spring中的AOP技术运用。 基本概念 老规矩,先看一个示例,来说明什么是AOP以及为什么要使用AOP。 假设我们有这么一个简单示例: @AllArgsConstructor public class User {…
图源:简书 (jianshu.com) Spring表达式语言(Spring Expression Language,简称 "SpEL")是一种强大的表达式语言,支持在运行时查询和操作对象图。该语言的语法与统一EL相似,但提供了额外的功能,最显著的是方法调用和基本的字符串模板功能。 评估 直接看一个简单示例: ExpressionParser expressionParser = new SpelExpressionParser(); Expression expression = expressionParser…
图源:简书 (jianshu.com) 在从零开始 Spring Boot 13:参数校验 - 红茶的个人站点 (icexmoon.cn)一文中,我讨论了一些可以用于参数校验的注解。实际上这些注解都是来自于Jakarta Bean Validation的Java数据验证体系的一部分。关于Bean Validation在Spring中的应用,还可以进行更进一步的探索,这将是本文接下来的内容。 关于Jakarta Bean Validation的更多介绍,可以参考Jakarta Bean Validation - Ho…
魔芋红茶
加一点PHP,加一点Go,加一点Python......
COPYRIGHT © 2021 icexmoon.cn. ALL RIGHTS RESERVED. 本网站由提供CDN加速/云存储服务
Theme Kratos Made By Seaton Jiang