0

restFull Web サービスに Spring Roo を使用しています。素晴らしい仕事。ここで、すべてのインスタンスのデフォルトの動作を変更したいと考えています。投稿が完了したら、結果のレコード ID が返される必要があります。Rooコードは

@RequestMapping(method = RequestMethod.POST, headers = "Accept=application/json")
public ResponseEntity<String> MdrAspectController.createFromJson(@RequestBody String json) {
    MdrAspect mdrAspect = MdrAspect.fromJsonToMdrAspect(json);
    mdrAspectService.saveMdrAspect(mdrAspect);
    HttpHeaders headers = new HttpHeaders();
    headers.add("Content-Type", "application/json");
    return new ResponseEntity<String>(headers, HttpStatus.CREATED);
}

リターンを変更したい

    return new ResponseEntity<String>(mdrAspect, headers, HttpStatus.CREATED);

つまり、作成されたレコードが返されます (レコード ID が必要なため)。

すべての Roo_Controller_Json.aj に対してこれを行うアスペクトを書きたいと思います。しかし、それはすでに側面です。これは可能ですか?

4

1 に答える 1

1

はい、アスペクトを他のアスペクトに適用することは可能です。これは、ポイントカットから自分のアスペクトを除外するのを忘れているため、多くの初心者が遭遇する典型的なトラップでさえあります。これは、無限ループでアドバイスが呼び出され、スタック オーバーフローが発生する可能性があるためです。ここで使用するのに適した言葉です。;-)

はい、around()アドバイスによってメソッドの戻り値を変更することは可能です。

いいえ、アスペクト内からローカル変数の値にアクセスすることはできません。あなたの例では、値にアクセスしたい場合はmdrAspect、別のソースから取得するか、自分でインスタンスを作成する必要があります。

もっと具体的な質問があれば教えてください。

于 2013-07-13T12:25:08.860 に答える