91麻豆视频-成人三级电影-被无耻变态上司侵犯-精品一区二区三区四区五区-黄色小视频免费观看-男人干女人视频-日本中文字幕在线观看视频-免费看黄色片子-日本三级中国三级99人妇网站-草1024榴社区成人-扒开双腿让70岁老头看-欧美人伦-国产清纯白嫩初高中在线观看性色-中文久久精品-久久国产剧情-91免费污-欧美日韩在线播放三区四区-日本网站黄色-亚洲最大成人综合网-欧美成人高清在线-天天噜日日噜-亚洲五月天综合-香港男男中粗大巨gaysex-床戏高潮呻吟声片段-97视频一区二区三区-精品免费囯产一区二区三区-久久开心网-free啪啪-黄色成人免费看-91精品一二区

網站開發(fā) APP開發(fā) 小程序開發(fā) SEO優(yōu)化 公司新聞

BeanDefanition的Resource定位

2018-05-30 10:10:28
1810

  這是SpringIOC初始化的第一步,找到水

  當我們以編程的方式去使用Factory時,首先會定義一個對象的Resource來定位要使用的BeadnDefinition,這時我們使用的是ClassPathResouce,這就以為著,這個Resource會類路徑去尋找這個xml文件,雖然說Resource是資源的意思,但是這不意味著DefaultListableFacory能夠直接使用這個Resource資源,這個資源是要被經過凈化的呢,Spring通過BeanDefinitionReader對這些Resource資源進行一些處理,這時我們就可以跟明顯的看到直接使用ApplicationContext的好處了,applicationContext里面已經有很多加載不同Resource的Reader的實現,而如果直接使用DefaultListableBeanFactory的話需要為他配置特定的ResourceReader才能完成相應的功能,當然么有絕對的利弊,直接使用DefaultListableFactory更具有靈活性。

  回到我們經常使用的ApplicationContext中,例如FileSystemXmlApplicationContext,ClassPathXmlApplication以及XmlWebApplicationContext中,我們很簡單的能從他們的名字就能看到FileSystem使用文件系統中尋找的Resource,ClassPath是直接從類路徑去尋找文件的載入Resource,webXml是直接從網上載入Resource

  我們以文件系統為例分析如何完成定位的,

  FileSystemXmlApplicationContext中有好多個構造器,最大的,最長的構造有三個參數

  其余的分別是一個或者是兩個參數,都是調用了最大的參數構造器,這個構造是這樣的

  public FileSystemXmlApplicationContext(String[] configLOcation, boolean refresh, ApplicationContext parent){

  super(parent);

  setConfigLocation(configLOcation);

  If(refresh){refresh()}

  }

  我們可以清楚的看到該方法有三個作用:①設置父類容器 ②設置資源路徑 ③調用初始化方法

  該類中還有另一個方法getResourceByPath()

  Protect Resorce getResourceByPath(String path){

  If(path!=null && path.startWith(“/”)){path=path.subString(1) }

  Return new FileSystemResource(path);

  }

  該方法在BeanDefanitionReader中被調用采用了模板的形式具體的定位在各個子類實現返回某種類型的Resource

?