【发布时间】:2009-11-12 17:50:01
【问题描述】:
在我的 Spring 项目中,Ibatis 有一个愚蠢的配置问题。请不要对我说这一切是如何设置的,我只是遵循“内部项目结构政策”。
这是结构,我们有“src/main/resources/META-INF/”文件夹,其中包含应用程序使用的所有配置文件,然后有一个“src/test/resources/META-INF/”,其中仅包含具有不同设置以运行单元测试的配置文件。
在我们的例子中,这只是一个文件,src/main/resources/META-INF/spring/application-config.xml 变成了 src /测试/resources/META-INF/spring/test-application-config.xml。我不打算概述两者之间的细微差别,因为那部分工作正常。
test-application-config.xml 导入 src/main/resources/META-INF/spring/data -access-config.xml 文件就好了,它反过来使用 src/main/resources/META-INF/ibatis/sqlmap- config.xml 成功...之后就是下地狱的时候了。
到目前为止,我们一直在使用 Spring 在类路径中查找下一个配置文件,但是当我们点击 sqlmap-config.xml 时,我们将 Spring 框架留给了 ibatis 框架,我相信,它加载相对于类路径在其中定义的资源文件(取自文档,无论是什么意思)。
在 sqlmap-config.xml 中定义了一些我们正在使用的资源文件,它们位于 src/main/resources/META-INF /ibatis/mapping 文件夹。 它们是这样引用的:
<sqlMapConfig><sqlMap resource="/META-INF/ibatis/mapping/MyObject.xml"/></sqlMapConfig>
当我正常运行应用程序时效果很好,但是当我运行我的 JUnit 测试用例时,我得到一个 IO 异常,指出它找不到文件 /META-INF/ibatis/mapping/MyObject.xml .
我尝试将 sqlmap-config.xml 中的路径更改为“mapping/MyObject.xml”,但这并没有帮助。我也尝试使用 Spring 类路径前缀“classpath:META-INF/ibatis/mapping/MyObject.xml”,也没有用。
任何人都知道如何正确设置 Ibatis 以使其适用于应用程序和 junit?
谢谢。
【问题讨论】:
标签: spring configuration testing ibatis