图源:简书 (jianshu.com) 在前面一篇文章从零开始 Spring Boot 27:IoC中,讨论过依赖注入集合(Java 容器)的内容,这里更深入地讨论注入集合的相关内容。 我们来看一个最基本的集合注入示例: public record BookCategory(String name) { } @Configuration public class WebConfig { //文学 //文学理论 @Bean BookCategory literaryTheory() { …
图源:简书 (jianshu.com) 在前面一篇文章从零开始 Spring Boot 27:IoC中,讨论过依赖注入集合(Java 容器)的内容,这里更深入地讨论注入集合的相关内容。 我们来看一个最基本的集合注入示例: public record BookCategory(String name) { } @Configuration public class WebConfig { //文学 //文学理论 @Bean BookCategory literaryTheory() { …
图源:Fotor懒设计 在日常使用的时候,我们往往需要创建一些“仅用于传输数据的类型”,比如Web编程时候的DTO。 将特殊用途的类型限制为“只读”的一个好处是,这些类型可以安全地在多线程之间共享,并且在涉及计算哈希值的时候,不用担心这些对象因为内部属性改变导致哈希值改变。 为什么要使用 Record 如果要创建一个“只读”类型,通常我们需要这样做: public class Person1 { private final String name; private final Integer age; …
图源:简书 (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…
图源:简书 (jianshu.com) PropertyEditor Spring使用PropertyEditor进行String和具体类型之间的转换: public interface PropertyEditor { void setValue(Object value); Object getValue(); String getAsText(); void setAsText(String text) throws java.lang.IllegalArgumentException; // ... } 这…
图源:简书 (jianshu.com) Resource 接口 Spring中的资源被抽象为一个Resource接口: public interface Resource extends InputStreamSource { boolean exists(); boolean isReadable(); boolean isOpen(); boolean isFile(); URL getURL() throws IOException; URI get…
魔芋红茶
加一点PHP,加一点Go,加一点Python......
COPYRIGHT © 2021 icexmoon.cn. ALL RIGHTS RESERVED.
本网站由提供CDN加速/云存储服务
Theme Kratos Made By Seaton Jiang