1

私はtomcat6x、注釈付きのSpring 3.1、cxf2.2xを使用しています。Webサービスプロジェクトがあります。メインプロジェクトで参照したwsprojectと呼び、myprojectと呼びましょう。Eclipseのconfigurebuildpathを使用して、wsprojectのプロジェクト参照をmyprojectに追加しました。すべてが機能していて、メインプロジェクトからWebサービスプロジェクトのコードに移動できます。

ただし、wsprojectからコントローラー(myprojectのmycontrollerなど)にmyserviceなどのサービスを自動配線しようとすると、springは次のエラーをスローします。

タイプ[com.service.MyService]の一致するBeanが依存関係に見つかりません:この依存関係のautowire候補として適格な少なくとも1つのBeanが必要です。依存関係の注釈:{}

これはservlet-context.xmlにあります。

<annotation-driven />
...
<context:annotation-config/>
<context:component-scan base-package="com.myproject" />


 <beans:import resource="classpath*:/WEB-INF/spring/serviceServlet/service-context.xml"/>
<context:component-scan base-package="com.service.myService"/>  

<beans:bean id="myService" class="com.service.myServiceImpl">
    <beans:property name="myService" ref="myService" />
</beans:bean>

MyControllerクラスには次のものがあります。

@Controller
public class MyController {
    @Autowired
    private MyService myService;
...

そして私が持っているサービスについて:

 @Service
    @WebService(targetNamespace = "http://...")
    public interface MyService {

//more methods ...

しかし、Springは何らかの理由で他のプロジェクトを見つけることができないようです。そのため、アプリを起動すると、ロード時にこのエラーが発生します。ここで何が悪いのか考えてみてください。

プロジェクトをSTSにインポートしましたが、Spring Explorerの下で、この追加のサービスコンテキストが読み込まれていないことがわかりました。これが、問題の根本的な問題のようです。ここで何かが正しく構成されていません。

余波:

eclipseがそれを使用しているように見えたとしても、私は実際には2番目のプロジェクトのコードを指していませんでした。Mavenで元の戦争依存関係を削除すると、コンパイルエラーが表示されました。そのため、サービスプロジェクトのブレークポイントで日食が停止していても、そのコードは実際には実行されていませんでした。それがどうなるかはわかりませんが、そうでした。

そこで、クライアントプロジェクトへの参照としてサービスプロジェクトを削除し、戦争としてパッケージ化して、Tomcatで実行しました。それは私の参照の問題を解決しました。

4

1 に答える 1

2

私はこれを少し違う方法で行います。両方のプロジェクトで春の構成を作成します。のように別の名前を付けservice-context.xmlます。次に、他の構成をメイン構成にインポートします。

<annotation-driven/>
...
<import resource="classpath:service-context.xml"/>
<context:annotation-config/>
<context:component-scan base-package="com.myproject"/>

これは、ビルド パス構成で他のプロジェクトが正しく参照されている場合に機能します。

とにかく、依存関係 (他のプロジェクトだけでなく、Spring の依存関係も含む) を使用してプロジェクトをビルドする場合は、Mavenと m2eclipse プラグインを調べてください。すでに多くのチュートリアルが利用可能であるため、ここでは完全なチュートリアルを提供しません。pom.xml基本を少し読んで、それを使用することを決定した場合、私はあなたに少しの援助を与えることができます.

于 2012-10-23T21:04:23.033 に答える