对文件存储引擎判断null的一个疑问
来源:6-10 抽象文件存储引擎(二)

曹学习
2023-05-22
用@Autowired,如果没有这个bean,在运行的时候不就会报错吗?那下面这里的判断null,有什么具体的含义吗?因为如果没有CacheManager项目就运行不起来呀
/**
* 公用父类
*/
public abstract class AbstractStorageEngine implements StorageEngine {
@Autowired
private CacheManager cacheManager;
/**
* 获取缓存对象
*
* @return
*/
protected Cache getCache() {
if (Objects.isNull(cacheManager)) {
throw new RPanFrameworkException("请添加缓存组件");
}
return cacheManager.getCache(CacheConstants.R_PAN_CACHE);
}
}
写回答
1回答
-
RubinChu
2023-05-22
这个问题问的很好,说明同学看的非常仔细。
首先,这个写法有一些多余,因为正如同学所说的一样,没有对应的实体bean,项目运行会报错。
这样写是为了防止一种情况,就是在Autowaire注解里面的require属性设置为false的时候,就需要在使用的时候非常小心,做好使用前的空指针检查。因为容器再注入属性的时候,检测到require设置为false的时候,不会强制指定该属性非空。
这里老师后面会做优化,这种写法主要是提醒同学们在写代码的时候,要时时刻刻保持判空的心态。
祝同学学习顺利
00
相似问题