1. 程式人生 > >從零開始的實習——Spring——ApplicationContext(暫時先去看Spring實戰)

從零開始的實習——Spring——ApplicationContext(暫時先去看Spring實戰)

Spring中的Resource

Spring框架內部使用org.springframework.core.io.Resource介面作為所有資源的抽象和訪問介面,我們在之前構造BeanFactory的時候已經接觸過它,比如: BeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource("...")); 其中ClassPathResource就是Resource的一個特定型別實現,代表的是位於ClassPath中的資源。 此外還有一些實現類(在org.springframework.core.io包下):

  • ByteArrayResource:位元組陣列提供的資料進行封裝。
  • ClassPathResource
  • FileSystemResource:檔案或者URL型別的資源訪問。
  • UrlResource
  • InputStreamResource:較為少用,一般以ByteArrayResource替代。

ResourceLoader 如何去查詢和定位資源,就是ResourceLoader的職責所在。 任何的ApplicationContext繼承了RespurcePatternResolver,讓然就間接實現了ResourceLoader介面。這就是ApplicationContext支援Spring內統一資源載入策略的真相。 在這裡插入圖片描述

作為ResourceLoader的ApplicationContext

以ResourceLoader身份登場的ApplicationContext:

ResourceLoader resourceLoader = new ClassPathXmlApplicationContext("配置檔案路徑");
// 或者
// ResourceLoader resourceLoader = new FileSystemXmlApplicationContext("配置檔案路徑");
Resource fileResource = resourceLoader.getResource("D:/spring21site/README");
assertTrue(fileResource instanceof
ClassPathResource); assertFalse(fileResource.exists()); Resource urlResource2 = resourceLoader.getResource("http://www.spring21.cn"); assertTrue(urlResource2 instanceof UrlResource);