Spring 的 @Async 使用防坑

很多人会直接只用@Async来执行异步操作。但是这里面有一个问题,如果都是用spring的默认实现,是有坑的。 当我们开启 EnableAsync注解 就可以使用@Async注解来执行异步操作了。 我们现在通过EnableAsync注解去打开spring异步世界的坑。 走JDK的动态代理:…

hello hello 发布于 2024-01-19

Spring系列之自动注入(autowire)详解

手动注入的不足 上篇文章中介绍了依赖注入中的手动注入,所谓手动注入是指在xml中采用硬编码的方式来配置注入的对象,比如通过构造器注入或者set方法注入,这些注入的方式都存在不足,比如下面代码: public class A{ private B b; private C c; private D d; private E e; .... private N…

hello hello 发布于 2024-01-19

Spring系列之depend-on的作用

本文主要讨论一下bean的创建和销毁的顺序,如何来干预bean的创建和销毁的顺序。 无依赖bean创建和销毁的顺序 我们先来看一下没有任何依赖的bean的创建和销毁的顺序。 下面的xml中定义了3个bean: <?xml version="1.0" encoding="UTF-8"?> <beans…

hello hello 发布于 2024-01-19

MySQL驱动扯后腿?Spring Boot用虚拟线程可能比用物理线程还差

之前已经分享过多篇关于Spring Boot中使用 Java 21新特性虚拟线程 open in new window 的性能测试案例: Spring Boot 3.2虚拟线程搭建静态文件服务器有多快? open in new window Spring Boot 虚拟线程与Webflux在JWT验证和MySQL查询上的性能比较 open in new…

hello hello 发布于 2024-01-18

Spring Boot 实现异步事件Event

场景 很多时候当我们完成某些业务后需要给用户推送相关消息提醒。对于这种非核心业务功能我们可以拿出来,创建一个事件去异步执行,从而实现核心业务和子业务的解耦。 实现 定义事件类 Event 创建一个类,继承 ApplicationEvent ,并重写构造函数。 ApplicationEvent 是Spring提供的所有应用程序事件扩展类。 public…

hello hello 发布于 2024-01-18

Spring系列之父子容器详解

主要的问题 什么是父子容器? 为什么需要用父子容器? 父子容器如何使用? 下面我们就来探讨探讨。 我们先来看一个案例 系统中有2个模块:module1和module2,两个模块是独立开发的,module2会使用到module1中的一些类,module1会将自己打包为jar提供给module2使用,我们来看一下这2个模块的代码。 模块1…

hello hello 发布于 2024-01-18

Spring系列之jdk动态代理和cglib代理

Spring中有个非常重要的知识点,AOP,即面相切面编程,spring中提供的一些非常牛逼的功能都是通过aop实现的,比如下面这些大家比较熟悉的功能 spring事务管理:@Transactional spring异步处理:@EnableAsync spring缓存技术的使用:@EnableCaching…

hello hello 发布于 2024-01-17

Spring系列之@Scope、@DependsOn、@ImportResource、@Lazy 详解

@Scope:指定bean的作用域 用法 @Scope用来配置bean的作用域,等效于bean xml中的bean元素中的scope属性。 看一下其源码: @Target({ElementType.TYPE, ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @Documented…

hello hello 发布于 2024-01-17

Spring之Bean循环依赖详解

什么是循环依赖? 这个很好理解,多个bean之间相互依赖,形成了一个闭环。 比如:A依赖于B、B依赖于C、C依赖于A。 代码中表示: kotlin复制代码public class A{ B b; } public class B{ C c; } public class C{ A a; } 如何检测是否存在循环依赖?…

hello hello 发布于 2024-01-17

Spring系列之玩转bean scope

本文内容 详细介绍5中bean的sope及使用注意点 自定义作用域的实现 应用中,有时候我们需要一个对象在整个应用中只有一个,有些对象希望每次使用的时候都重新创建一个,spring对我们这种需求也提供了支持,在spring中这个叫做bean的作用域,xml中定义bean的时候,可以通过scope属性指定bean的作用域,如: <bean id=""…

hello hello 发布于 2024-01-16
上一页 下一页