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 社区中所有即将举行的活动。

查看全部