1

spring-ws サービスを含む大きな Spring アプリケーションを「継承」しました。

このサービスは、典型的な Spring-WS コードです。

package service;

@Endpoint
public class ServiceEndpoint {
    @Resource EntityDao entityDao;

    @PayloadRoot(localPart=...)
    @ResponsePayload
    public ResponseWrapperClass getServiceMethod(@RequestPayload RequestWrapperClass request) {
        return new ResponseProcessorClass(request).generateResponse();
    }
}

サービスは大規模で、 @Resource アノテーションが注入された entityDao がクラスで広く使用されています。

私が取り組んでいる特定のメソッドは少し複雑なので、サブパッケージ内の別のクラスにカプセル化しました。

ResponseProcessorClass は次のようになります。

package service.business;
@Component
public class ResponseProcessorClass {
    @Resource EntityDao entityDao;

    public ResponseWrapperClass generateResponse() {
        entityDao.getSomeData(); //encapsulates hibernate logic -> Null Pointer Exception
    }
}

上記のコメントからわかるように、新しいクラスで @Resource アノテーションを使用すると、Null Pointer Exception が発生します。

以前にこの注釈を使用したことはありませんが、ドキュメントから理解したところでは、型を推測して注入する必要があります。XMLファイルにも構成が見つかりませんでした。

なぜNPEを取得しているのか誰か教えてもらえますか?

4

1 に答える 1

1

Spring は、Spring 管理 Bean にのみ Spring 管理 Bean を注入できます。したがって、自分でオブジェクトを作成すると、Spring はそれについて何もできません。これ

return new ResponseProcessorClass(request).generateResponse();

が問題です。SpringResponseProcessorClass作成したオブジェクトのフィールドを注入することを期待しています。

自分で作成する代わりに、プロトタイプ Bean を注入してみてください。これはResponseProcessorClassクラスによって異なります。

于 2013-10-14T22:03:22.960 に答える