@lazy 解决循环依赖
时间: 2023-08-28 15:08:45 浏览: 51
@Lazy注解可以用来解决构造方法循环依赖问题。当一个类的构造方法中存在循环依赖时,可以在构造方法上或者参数上标注@Lazy注解。这样,在创建对象时,Spring会先判断构造方法中是否标注了@Lazy注解。如果标注了@Lazy注解,Spring会创建一个代理对象,而不会立即触发getBean()操作。如果没有标注@Lazy注解,Spring会按照正常的逻辑调用getBean()方法,但是这样会直接报异常,因为Spring不支持构造方法的循环依赖。只有加了@Lazy注解,临时通过代理方法才能解决构造方法循环依赖问题。\[2\]
循环依赖问题指的是一个类中存在相互依赖的属性。比如在Apple类中有一个属性Orange,而Orange类中又有一个属性Apple。这种情况下,可以称之为循环依赖。循环依赖问题不仅在Spring中存在,在Mybatis中也有类似的问题。解决循环依赖问题的思想基本一样,都需要借助额外的缓存来实现。\[3\]
#### 引用[.reference_title]
- *1* *2* *3* [Spring 通过 @Lazy 注解解决构造方法循环依赖问题](https://blog.csdn.net/qq_35971258/article/details/128273615)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]