0

春休みのプロジェクトが機能していたので、このプロジェクトの一部を新しいプロジェクトに移動して、ベースプロジェクトのようなものにすることにしました。この新しいベースプロジェクトには、休止状態のいくつかのdaoクラスと多くの春のアノテーションが含まれています。それで、私はそれを首尾よく作成し、それを私のリポジトリにリリースしました。その後、最初のプロジェクトに依存関係のように追加しました。また、ベースプロジェクトのパッケージを使用してspringconfigに追加しました。これで、Spring/Hibernate構成のないベースプロジェクトができました。そして、ベース1に依存する別のプロジェクト、およびこの別のプロジェクトには、Spring/Hibernate構成があります。

そして今、私は多くのランタイムエラーを受け取ります。1.ベースプロジェクトのサービスクラスは、ベースプロジェクトの別のパッケージからDAOクラスを自動配線できません。私がそれを1つのパッケージに入れた後、問題は大騒ぎになりました。しかし、私はそれがあまり好きではありません。2.私のDAOメソッドは実行時に「スレッドにバインドされたHibernateセッションがなく、構成ではここで非トランザクションセッションを作成できません」と分類されます。しかし、以前は、1つのプロジェクトがあったとき、それらは正常に機能していました。

ベースプロジェクトにスプリング構成が必要ですか?そして、どうすればそのようなことを正しく行うことができますか?

アップデート

春のトランザクションマネージャーで問題が発生しました。基本プロジェクトには、daoクラスを備えた基本抽象コントローラーがあります。メインクラスには、ベースコントローラーを継承するコントローラーがあります。サーバーでプロジェクトを実行すると、ベースdaoがsessionFactory.getCurrentSession()を呼び出すと、「スレッドにバインドされたHibernateセッションがありません」というメッセージが表示されます。しかし、このプロジェクトを分割する前は、すべてがうまく機能しています。また、junitからDaoメソッドを実行すると、それらも正常に機能します。

Sloveの 問題は、一部のパッケージが「context:component-scan」で追加されたことです。そしてそれはこの効果を与えます。お返事ありがとうございます。

4

2 に答える 2

0

メイン プロジェクト (ベース プロジェクトではない) の dao/services に @Service または @Component アノテーションを使用する場合は、Spring コンテキスト xml でスキャン パッケージを指定する必要があります。これはうまくいくはずです。

休止状態のエンティティ マッピングでも同じことができます。メイン プロジェクトでは、Spring LocalSessionFactoryBean を使用して、休止状態のエンティティがベース プロジェクトからパッケージをスキャンするように設定します。これは私にとってはうまくいくので、あなたにもうまくいくはずです。

于 2012-06-08T12:02:31.103 に答える
0

Spring 構成ファイルは、クラスパス (ベース プロジェクト、メイン プロジェクトなど) のどこにでも配置できます。それらを Web.xml ファイルのコンテキストに追加するだけです。

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
        classpath:/applicationContext-context1.xml         
        classpath:/applicationContext-context2.xml
        classpath:/applicationContext-context3.xml
        /WEB-INF/applicationContext-context4.xml 
    </param-value>
</context-param>

現在行っているように、それらすべてをメイン アプリケーション (ベース ライブラリではなく) に配置する方がよいと思います。

于 2012-06-08T12:02:49.317 に答える