springboot项目循环依赖
方法一:在你的配置文件中,在互相依赖的两个bean的任意一个加上lazy-init属性。
方法二:在你注入bean时,在互相依赖的两个bean上加上@Lazy注解
@Autowired
@Lazy
private ClassA classA;
@Autowired
@Lazy
private ClassB classB;
以上两个方法都能延迟互相依赖的其中一个bean的加载,从而解决循环依赖的问题
乐观锁:
查询一条数据的时候,会先去查询版本号,比如版本号为1
执行操作会带上这个版本号
如果相同,等于1,执行操作。如果不同,执行失败。
如果此时,有另一条数据先执行了,版本号变为2,
那么上面执行时,版本号就不是1了,上面执行就会失败
要是没有加锁,当线程1执行的时候就会把线程2的值覆盖。
线程1给一条数据进行操作,查询数据的时候会带上version版本号(假定为1),
操作的时候会进行比对,如果版本号为1,执行操作。否则操作失败。
当
悲观锁:关系型数据库里边就有很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。