图源:简书 (jianshu.com) Spring 提供一个简单但使用的缓存(Cache)机制,我们可以利用它来优化代码执行效率。 简单示例 老规矩,我们从一个简单示例开始: @Service public class FibonacciService2 { @Clock public long fibonacci(int n) { return doFibonacci(n); } private long doFibonacci(int n) { if (n…
图源:简书 (jianshu.com) Spring 提供一个简单但使用的缓存(Cache)机制,我们可以利用它来优化代码执行效率。 简单示例 老规矩,我们从一个简单示例开始: @Service public class FibonacciService2 { @Clock public long fibonacci(int n) { return doFibonacci(n); } private long doFibonacci(int n) { if (n…
图源:简书 (jianshu.com) 在前文中,我介绍了 Spring Bean 的作用域(Scope),且讨论了将一个短生命周期的 bean (比如request作用域的 bean)注入到长生命周期的 bean (比如singleton作用域的 bean)时所面临的问题,此类问题都需要我们对短生命周期的 bean 通过代理注入来解决。 实际上,即使都是长生命周期的bean,比如singleton作用域和prototype作用域的 bean,注入也存在一些问题。 注入问题 这里用一个示例说明将 prototype…
图源:简书 (jianshu.com) 在前文中我介绍过 FactoryBean,本篇文章会更深入的介绍相关内容。 依赖注入 从一个简单示例开始,我们看使用FactoryBean定义的 Spring Bean 如何注入。 假设我们有以下的几个类: public class Clock { private LocalDateTime time; private int num; private static DateTimeFormatter dateTimeFormatter = DateTime…
图源:简书 (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…
魔芋红茶
加一点PHP,加一点Go,加一点Python......
COPYRIGHT © 2021 icexmoon.cn. ALL RIGHTS RESERVED.
本网站由提供CDN加速/云存储服务
Theme Kratos Made By Seaton Jiang