getConfigLocations() 发生了什么?

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

上周我去了客户现场,有人问:“为什么 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 社区中所有即将举行的活动。

查看全部