扫码阅读
手机扫码阅读

@Lazy 注解为啥就能破解死循环?

39 2024-11-05

我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。

查看原文:@Lazy 注解为啥就能破解死循环?
文章来源:
江南一点雨
扫码关注公众号

松哥在最新的文章中讨论了Spring中的循环依赖问题,并提供了使用@Lazy注解作为解决方案的详细解析。文章首先明确了,并非所有的循环依赖都能被Spring自动解决。在构造器中互相注入的Bean会导致死循环,但Spring通过@Lazy注解能暂时解开这个死结。

1. @Lazy注解的应用

通过在服务类的构造方法上添加@Lazy注解,可以避免启动时的错误,但是这会导致注入的Bean实际上是代理对象而非原始对象。使用@Lazy注解的对象在需要时才会加载,而Spring内部会生成该对象的代理。该技术同样可以解决@Scope("prototype")@Async注解导致的循环依赖问题。

2. @Lazy注解原理分析

文章接着分析了@Lazy注解的源码流程,详细解释了在属性注入过程中如何处理延迟加载。在创建Bean时,会调用populateBean方法填充属性,继而执行后置处理器。如果属性注入需要,resolveDependency方法会通过getLazyResolutionProxyIfNecessary判断是否创建代理对象,若需要则通过buildLazyResolutionProxy方法生成代理,延迟实际对象的加载。

最后,松哥提醒开发者,虽然@Lazy注解可以解决循环依赖,但在实际开发中应尽量避免这种依赖关系。

此外,松哥宣布TienChin视频项目已完结,该项目使用了Spring Boot和Vue3技术栈,并邀请小伙伴们一起加入完成一个高完成率的项目。

想要了解更多内容?

查看原文:@Lazy 注解为啥就能破解死循环?
文章来源:
江南一点雨
扫码关注公众号