图源:简书 (jianshu.com) 本篇文章我们讨论如何在 Spring 项目中编写测试用例。 当前使用的是 Spring 6.0,默认集成 JUnit 5。 依赖 Spring Boot 的测试功能需要以下依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <…
图源:简书 (jianshu.com) 本篇文章我们讨论如何在 Spring 项目中编写测试用例。 当前使用的是 Spring 6.0,默认集成 JUnit 5。 依赖 Spring Boot 的测试功能需要以下依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <…
图源:简书 (jianshu.com) Spring 通过注解实现 DI(依赖注入),本文详细讨论这些注解。 @Autowired @Autowired是 Spring 定义的注解,属于包org.springframework.beans.factory.annotation。 @Autowired匹配 bean 的顺序是: 按类型(type)匹配 按限定符(qualifier)匹配 按名称(name)匹配 @Autowired是最常用的注解,用它可以通过属性注入、Setter注入、构造器注入来实现DI。在前文中讨…
图源:简书 (jianshu.com) 在之前的文章中,我多次介绍过在 Spring 中如何使用@Async注解让方法调用变成“异步执行”: 在这篇文章中,介绍了如何让定时任务使用@Async变成异步执行。 在这篇文章中,介绍了如何让事件监听使用@Async变成异步执行。 下面,本篇文章将详细探讨@Async在 Spring 中的用途。 简单示例 老规矩,我们从一个简单示例开始说明: @Component public class Fibonacci { /** * 返回斐波那契数列的第n位的值 …
图源:简书 (jianshu.com) Spring 实现了一个简单、实用的事件框架,利用它我们可以在多个组件之间进行松耦合式的通信。 简单示例 让我们从一个简单的示例开始: public record Email(String address, String content) { } public class EmailsReceivedEvent extends ApplicationEvent { @Setter @Getter private List<Email> ema…
图源:简书 (jianshu.com) 定时任务是一种很常见的需求,比如我们可能需要应用定期去执行一些清理工作,再比如可能需要定期检查一些外部服务的可用性等。 fixedDelay 要在 Spring 中开启定时任务相关功能,需要在任意的配置类上添加上@EnableScheduling: @Configuration @EnableScheduling public class WebConfig { } 之后就可以在 Spring Bean 中定义一个定时任务对应的方法: @Component public cl…
图源:简书 (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() { …
图源:Fotor懒设计 在日常使用的时候,我们往往需要创建一些“仅用于传输数据的类型”,比如Web编程时候的DTO。 将特殊用途的类型限制为“只读”的一个好处是,这些类型可以安全地在多线程之间共享,并且在涉及计算哈希值的时候,不用担心这些对象因为内部属性改变导致哈希值改变。 为什么要使用 Record 如果要创建一个“只读”类型,通常我们需要这样做: public class Person1 { private final String name; private final Integer age; …
魔芋红茶
加一点PHP,加一点Go,加一点Python......
COPYRIGHT © 2021 icexmoon.cn. ALL RIGHTS RESERVED. 本网站由提供CDN加速/云存储服务
Theme Kratos Made By Seaton Jiang