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

查看所有