127.Spring如何解决循环依赖循环依赖的问题其实是因为同时加载导致死锁,解决循环依赖的问题主要思路是让加载时间错开。spring通过三级缓存解决循环依赖,第一级缓存是单例池,二级缓存存放创建出来但还没有初始化的对象,对象创建的中间状态,对象初始化的时候,如果在一级缓存没有找到,就会到二级缓存找。通过先加载一个没有初始化的对象的方式,让初始化方法不会同时进行。spring除了正常的对象还有动态代理对象,动态代理对象的中间状态存放在第三级缓存。spring无法解决通过构造函数循环依赖的问题,可以用@Lazy,使构造函数不同时进行来解决。