我正在嘗試學習 Spring Core,并且正在學習Spring in Action,第四版。
在這本書中,我看到:
AnnotationConfigApplicationContext —從一個或多個基于 Java 的配置類加載Spring 應用程式背景關系。
AnnotationConfigWebApplicationContext —從一個或多個基于 Java 的配置類加載Spring Web 應用程式背景關系。
ClassPathXmlApplicationContext —從位于類路徑中的一個或多個 XML 檔案加載背景關系定義,將背景關系定義檔案視為類路徑資源。
FileSystemXmlApplicationContext —從檔案系統中的一個或多個 XML 檔案加載背景關系定義
XmlWebApplicationContext -Loads語境定義來自一個或多個XML檔案包含在一個Web應用程式
我的問題是關于前兩個定義和后三個定義之間的差異。前兩個定義加載 Spring 應用程式背景關系,后三個定義加載背景關系定義。
應用程式背景關系和背景關系定義有什么區別?
和 :
將背景關系定義檔案視為類路徑資源
這句話是什么意思?什么是背景關系定義檔案?為什么我們應該加載它們?
我們從組態檔中加載了應用程式背景關系。沒關系。但是為什么當我們有背景關系定義檔案時我們應該加載背景關系定義呢?!
uj5u.com熱心網友回復:
ApplicationContext是一個類的介面,它通過依賴注入為您的應用程式提供資源。
AnnotationConfigApplicationContext、AnnotationConfigApplicationContext、ClassPathXmlApplicationContext、FileSystemXmlApplicationContext 和 XmlWebApplicationContext 都是該介面的實作。
如果您仔細查看這些類的名稱,您會發現每個類都考慮了兩件事:
- 背景關系的定義從何而來?
- 為什么型別的應用程式提供背景關系?
因此,AnnotationConfig* 背景關系從源代碼中的注釋獲取背景關系定義(應該提供哪些 bean),而Xml背景關系具有在 XML 中定義的定義,并且該 XML 的位置不同,即類路徑、檔案系統、Web -inf 資源。
您參考的檔案在某種程度上混淆了這些問題。
基于注解的背景關系被描述為加載一個背景關系,而它們實際上在做的是自省注解(充當背景關系定義),并構建一個背景關系類的實體。
基于xml的背景關系被描述為加載一個背景關系定義,是正確的(xml檔案就是背景關系定義),但是描述不完整。他們正在加載一個描述要提供什么 bean 的 xml 檔案,然后構建一個背景關系類的實體。
XML 檔案是指定由背景關系提供的 bean 的原始方式,據我所知,在現代應用程式中沒有使用。我確信那里有例外,但我見過的每個應用程式(我是一名顧問 - 我見過很多)都使用注釋。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/419244.html
標籤:
