背景
在启动SpringBoot时出现这样的问题:
直接启动失败
初步解决
百度后说是bean注入失败,于是不知道🤷♀️为啥,然后我在AndroidService类中的AsyncTask
加了@Lazy注解,竟然可以启动了。
但是这改动了之前同学的代码,虽然问题暂时解决了,但还不是很清楚问题的根本原因
于是仔细去翻了AndroidService的代码,可以发现:这个类中注入了AsyncTask,点击这个AsyncTask可以看到这个类被注入了@Lazy,而这个类就是!!!!我在代码中使用的bean,所以只要在我写的代码中把这个bean加上@Lazy,就可以启动了。
@Lazy
那下面我们来学习下这个注解@Lazy
Spring IoC (ApplicationContext) 容器一般都会在启动的时候实例化所有单实例 bean 。如果我们想要 Spring 在启动的时候延迟加载 bean,即在调用某个 bean 的时候再去初始化,那么就可以使用 @Lazy 注解。