2

SpringプロジェクトでIbatisの設定に愚かな問題があります。これらすべてがどのように設定されたかについて私に飛びついてはいけません。私は「社内プロジェクト構造ポリシー」に従っているだけです。

これが構造です。アプリケーションで使用されるすべての構成ファイルを含む「src/ main / resources / META-INF /」フォルダーがあり、次に「src / test / resources /META-INF/ 」があります。 "これには、単体テストを実行するためのさまざまな設定を持つ構成ファイルのみが含まれています。

この場合、ファイルは1つだけで、src /main/resources/META-INF/spring/application-config.xmlsrc/ test /resources/META-INF/spring/test -application -config.xmlになりました。その部分はうまく機能するので、2つの間の小さな違いについては説明しません。

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フレームワークに残します。これにより、Springフレームワーク内で定義されたリソースファイルがクラスパス(それが意味するものは何でも、ドキュメントから取得されます)。

sqlmap-config.xml内には、 src / main / resources / META-INF / ibatis /mappingフォルダー内にある使用しているいくつかのリソースファイルが定義されています。それらは次のように参照されます:

<sqlMapConfig><sqlMap resource="/META-INF/ibatis/mapping/MyObject.xml"/></sqlMapConfig>

アプリを通常どおり実行すると正常に機能しますが、JUnitテストケースを実行すると、ファイル/META-INF/ibatis/mapping/MyObject.xmlが見つからないことを示すIO例外が発生します。

sqlmap-config.xmlのパスを「mapping/MyObject.xml 」に変更しようとしましたが、役に立ちませんでした。また、Springクラスパスプレフィックス「classpath:META-INF / ibatis / mapping / MyObject.xml」を使用しようとしましたが、どちらも機能しませんでした。

アプリとjunitの両方で機能するようにIbatisを適切に設定する方法について誰かが知っているでしょうか?

ありがとう。

4

3 に答える 3

1

この問題を解決するために、src / test / resources/META-INFフォルダーからすべてのIbatisファイルとフォルダーを削除しました。

src / main / resources / META-INF / ibatis/mappingファイルのsqlmap-config.xmlが次のようにマップされるようになりました。

<sqlMapConfig><sqlMap resource="META-INF/ibatis/mapping/MyObject.xml"/></sqlMapConfig>

私の最初の投稿と比較して、先頭の「/」がなくなっていることに注意してください...それがここでの違いを生んだと思います。

これが同様の問題に遭遇した人に役立つことを願っています。

于 2009-12-28T19:01:49.287 に答える
0

あなたが言っていることが実際に問題であるかどうかを確認するためだけに..マッピング(MyObject.xml)をsqlmap-config.xmlと同じフォルダーに配置することをお勧めします。これは、Spring +ibatis+ユニットテストの問題がかなりの割合で発生したためです。(私が尋ねた解決済みの質問を参照してください)

また、マッピングファイルがコンテナの外部に存在しないため(テストを実行する場合)、IO例外が発生する可能性があります。

から作成されたBeanの定義も投稿する必要がありますSqlMapClientFactoryBean。これには、sqlMapConfigxmlへのパスを含むconfigLocationプロパティが必要です。

于 2009-11-13T02:59:50.980 に答える
0

私は同じ問題を抱えていて、何がうまくいかないのかを正確に説明する(迅速な)解決策を見つけることができませんでした。したがって、私の答え。

IbatisのSpringドキュメントにあるように:

iBATISはクラスパスからリソースをロードするため、必ず「Account.xml」ファイルをクラスパスに追加してください。

META-INFあなたの場合、Webプロジェクトのビルドパスに追加することによって、つまりEclipseを使用した場合<classpathentry kind="src" path="META-INF"/>は、プロジェクトに設定します' .classpath(これはEclipseのナビゲータービューの下に表示されます)

于 2014-03-05T19:00:51.570 に答える