0

ロギングに使用される Spring AOP アスペクトがあり、次のように、アノテーションを追加することでロギングにメソッドを含めることができます。

@AspectLogging("do something")
public void doSomething() {
    ...
}

私はSpring Beanでこれを使用してきましたが、うまく機能しています。さて、REST サービスで使用したかったのですが、いくつか問題が発生しました。ので、私は持っています:

@Path("/path")
@Service
public class MyRestService {
    @Inject
    private Something something;

    @GET
    @AspectLogging("get some stuff")
    public Response getSomeStuff() {
        ...
    }
}

このセットアップは問題なく機能します。私がロギングを追加しようとしているRestサービスにはインターフェースがあり、どういうわけか混乱しています。@AspectLoggingメソッドの 1 つにアノテーションを追加するとすぐに、依存関係は Bean に注入されず、アスペクトはより新しく呼び出されます!

機能する REST サービスにインターフェイスを追加しようとしましたが、同じエラーが発生します。

インターフェイスを持つことで、この種の問題がどのように発生するのでしょうか? アスペクトロガーは、他のインターフェイスを持つクラスで機能しますが、REST サービスの場合にのみ問題になるようです..

4

2 に答える 2

1

私の意見では、あなたが実際にやろうとしているのは、jersey によって管理されているクラスにスプリング アノテーションを追加することです。その結果、何かのプロキシのプロキシのプロキシを受け取っています。これは良い考えだとは思いません。これは問題なく機能します。Bean ベースの検証を実装しようとしたときに、同様の問題が発生しました。@PahtParam アノテーションと @Valid アノテーションが同じ場所にあると、何らかの理由で、検証アノテーションが表示されませんでした。私のアドバイスは、ロギングを @Controller ではなく @Service レイヤーに移動することです。

于 2014-08-05T15:22:05.190 に答える