Spring抽象的资源接口Resource的继承体系

写句题外话,市面上的spring书籍多如牛毛,有很多可选的,但是很系统的博客不多,推荐一个我朋友(开涛)的博客,我觉得他的Spring系列写的非常棒:


请戳下面的链接:


跟着开涛学Spring3


而我写的这些零零散散的关于Spring博客,是他这一个系统的一些读后感,以及一些个人见解,另外我会补上一些类图,让大家对整个知识体系有一个比较系统的认识。


声明:所有类图,都不包含private的子类


Spring抽象的资源接口Resource的继承体系_第1张图片

关于Resource的使用,可以参见开涛的博客。  我想说一下我的一点认识吧。  其实这些Resource主要就分为2大类:只读,与可读可写。

从上面类图我们可以看出FileSystemResource,实现了WritableResource,因此仅有这个类属于可读可写,而其它的均属于只读的Resource.

这一点,我们从可以从源码的角度来证明,我们来看一个WritableResource提供那些扩展方法。

Spring抽象的资源接口Resource的继承体系_第2张图片

看到木有? 可以得到OutputStream。 而我们再来看一下AbstractResource类的说明


Spring抽象的资源接口Resource的继承体系_第3张图片

上面有很清楚的注释: isOpen() 总是Return false.而 getURL() 和 getFile()总是抛出异常, 这3个方法的源代码截图我就不贴出来。 各位可以想想为什么?

如果能获取到一个资源的URL 或者说能获取 某个File,那我是不是就有机会对他进行写操作。  因此,从这个角度来说,AbstractResouce及其子类都是只读资源(重写过这些方法的子类例外)。


另外,Resource是在spring-core包,他是可以独立于Spring来使用的。

你可能感兴趣的:(SSH那些事)