对文件存储引擎判断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的时候,不会强制指定该属性非空。

这里老师后面会做优化,这种写法主要是提醒同学们在写代码的时候,要时时刻刻保持判空的心态。

祝同学学习顺利

0
0

SpringBoot+Vue3+Element Plus打造私人分布式存储系统

SpringBoot+Vue3+Element Plus 仿百度网盘实战

274 学习 · 347 问题

查看课程