抢占先机
VMware 提供培训和认证,以加速您的进步。
了解更多上周我在客户现场,人群中有人问:“为什么 getConfigLocations() 不再是抽象的了?” 在客户面前工作一段时间后,你变得很少会说不出话来,但我的确如此。 老实说,我的第一个想法是客户肯定错了。 但出乎意料的是,在 AbstractSingleSpringContextTests 的 1.3 版本中,它明确指出 getConfigLocations() 不再是抽象的。 我没有针对 2.0.1 创建任何新的集成测试,所以甚至没有看到这个变化。
对此感到惊讶,我发了一封电子邮件给 Juergen,想知道发生了什么事,这就是他不得不说的。
这个改变是为了那些覆盖 "contextKey()" 和 "loadContext(Object)",获取其他形式的 ApplicationContext(不是默认的 ClassPathXmlApplicationContext)的人。 在这种情况下,"getConfigLocations()" 没有意义,因为它只与 "contextKey()" 的默认实现相关。 所以任何覆盖这些钩子的人都必须提供一个空的 "getConfigLocations()" 方法,这有点傻... 如果我们总是希望人们提供配置位置,我们一开始就不应该暴露那些受保护的 "contextKey()" 和 "loadContext(Object)" 方法。
所以简而言之,你仍然可以像以前一样覆盖 getConfigLocations() 方法,只是不会再有抽象方法来提醒你。
特别感谢 Gregory Kick 提出这个问题。