二 spring源碼分析---資源模塊接口設計

前言spring

spring framework將資源抽象,面向接口編程,以便使框架和具體實現相互分離,這也是spring非侵入式的體現編程

資源模塊接口的設計圖數組


接下來仍是須要先了解每個接口的功能app

1.InputStreamSource框架

2.Resource
對底層資源的一種抽象描述,好比文件或classpath的資源;url


3.WritableResource 
對Resource的擴展接口,擴展了寫出的功能

4.AbstractResource 
爲實現類提供便利的基類

5.BeanDefinitionResource 主要是包裹了一個BeanDefinition,其中spa

  • DescriptiveResource 包裹了一個description字符串
  • InputStreamResource  對於給定InputStream資源的接口,因此該類中的isOpen()方法老是返回true;
  • ByteArrayResource 包裹了一個字節數組 byteArray,是負責byte資源的接口;
  • FileSystemResource 包裹了一個File,負責文件資源的接口;
  • PathResource 包裹了一個Path,即負責nio中path的接口;
  • AbstractFileResolvingResource 解析URL爲文件,如UrlResource, ClasspathResource;

6.UrlResource 負責URL定位的類,若是url的協議是"file:", 也能夠轉爲文件資源;

7.ClassPathResource 定位classpath下的資源


以上是對資源高度抽象的接口設計,下面要看到的是對資源加載的接口設計





8.ResourceLoader
加載資源的策略接口(如filesystem or classpath ), ApplicationContext繼承了該功能,能夠在ApplicationContext運行時,使用特定的資源加載策略讀取資源;DefaultResourceLoader是一個獨立的實現,在ApplicationContext外部使用;


9.ResourcePatternResolver
策略接口,根據location 模式(如ant-style)解析爲Resource資源對象;ApplicationContext經過ResourceLoaderAware將ResourceLoader注入上下文,加載資源;設計


10.PathMatchingResourcePatternResolver 是一個獨立的實現,在applicationcontext外部使用;輸入的模式必須匹配實現的策略;該接口只是提供了轉換方法而不是指定了資源模式的具體格式;

對象

相關文章
相關標籤/搜索