getConfigLocations() 怎麼了?

工程 | Ben Hale | 2006 年 12 月 08 日 | ...

上週我在一個客戶現場,人群中有一個問題:“為什麼 getConfigLocations() 不再是抽象的了?”在客戶面前工作一段時間後,你很少會說不出話來,但我當時就是。老實說,我第一個想法是客戶不可能對。但是瞧,在 AbstractSingleSpringContextTests 的修訂版 1.3 中,它清楚地表明 getConfigLocations() 不再是抽象的。我沒有針對 2.0.1 建立任何新的整合測試,所以我甚至沒有看到這個改變。

對此感到驚訝,我給 Juergen 發了封郵件,想弄清楚怎麼回事,以下是他的回覆:

這個改動是為了那些重寫了“contextKey()”和“loadContext(Object)”,並獲得某種其他形式的 ApplicationContext(非預設的 ClassPathXmlApplicationContext)的人。在這種情況下,“getConfigLocations()”就沒有意義了,因為它只對“contextKey()”的預設實現是相關的。所以任何重寫了這些鉤子的人都必須提供一個空的“getConfigLocations()”方法,這有點傻……如果我們一直希望人們提供配置位置,一開始就不應該暴露那些受保護的“contextKey()”和“loadContext(Object)”方法。

所以,簡而言之,你仍然可以像以前一樣重寫 getConfigLocations() 方法,只是你不再會收到一個抽象方法的提醒。

特別感謝 Gregory Kick 提出這個問題。

獲取 Spring 新聞通訊

透過 Spring 新聞通訊保持聯絡

訂閱

領先一步

VMware 提供培訓和認證,助您加速進步。

瞭解更多

獲得支援

Tanzu Spring 提供 OpenJDK™、Spring 和 Apache Tomcat® 的支援和二進位制檔案,只需一份簡單的訂閱。

瞭解更多

即將舉行的活動

檢視 Spring 社群所有即將舉行的活動。

檢視所有