搶佔先機
VMware 提供培訓和認證,以加速您的進步。
瞭解更多上週我在客戶現場,人群中有人問:“為什麼 getConfigLocations() 不再是抽象的了?” 在客戶面前工作一段時間後,你變得很少會說不出話來,但我的確如此。 老實說,我的第一個想法是客戶肯定錯了。 但出乎意料的是,在 AbstractSingleSpringContextTests 的 1.3 版本中,它明確指出 getConfigLocations() 不再是抽象的。 我沒有針對 2.0.1 建立任何新的整合測試,所以甚至沒有看到這個變化。
對此感到驚訝,我發了一封電子郵件給 Juergen,想知道發生了什麼事,這就是他不得不說的。
這個改變是為了那些覆蓋 "contextKey()" 和 "loadContext(Object)",獲取其他形式的 ApplicationContext(不是預設的 ClassPathXmlApplicationContext)的人。 在這種情況下,"getConfigLocations()" 沒有意義,因為它只與 "contextKey()" 的預設實現相關。 所以任何覆蓋這些鉤子的人都必須提供一個空的 "getConfigLocations()" 方法,這有點傻... 如果我們總是希望人們提供配置位置,我們一開始就不應該暴露那些受保護的 "contextKey()" 和 "loadContext(Object)" 方法。
所以簡而言之,你仍然可以像以前一樣覆蓋 getConfigLocations() 方法,只是不會再有抽象方法來提醒你。
特別感謝 Gregory Kick 提出這個問題。