11

Webリクエストに機能を追加する独自のアノテーションを実装するために何をする必要があるかを誰かが説明できますか?

例えば:

@Controller
public class MyController {
    @RequestMapping("/abc")
    @RequiresSomeSpecialHandling
    public void handleSecureRequest() {
    }
}

これは、指定されたWebリクエストの前または後に特別な作業@RequiresSomeSpecialHandlingを行うための独自の注釈です/abc

非常に高いレベルでは、Beanポストプロセッサを作成し、クラスをスキャンしてアノテーションを取得し、必要に応じてカスタムMVCインターセプターを挿入する必要があることを知っています。しかし、このタスクを簡素化するためのショートカットはありますか?特に上記の2つの例では。

前もって感謝します、

4

3 に答える 3

4

この種のアノテーション(メソッドを呼び出すときに追加機能を追加する)は、AOPアドバイスをトリガーするアノテーションのように見えます。

@Springリファレンス第7章を参照してください。Springを使用したアスペクト指向プログラミング


アイデアは、注釈を使用してAOPアドバイスをトリガーすることです。

お気に入り:

@Pointcut("@target(com.example.RequiresAuth)")
于 2012-02-03T10:21:56.507 に答える
2

@RequiresSomeSpecialHandlingの結果として何をしたいかによります。たとえば、リクエストのマッピングやメソッドの呼び出し(つまり、メソッド引数の解決、戻り値の処理)に影響を与えたいですか?

Spring 3.1での注釈付きクラスのサポートは、はるかにカスタマイズ可能になりました。このリポジトリでいくつかの例を参照できます。

また、Spring 3.1のHandlerInterceptorは、ハンドラーオブジェクトをHandlerMethodにキャストできることにも注意してください。これにより、アノテーションを含む正確なメソッドにアクセスできます。それはあなたがする必要があることには十分かもしれません。

于 2012-02-13T21:51:43.467 に答える
-3

キャッシングが目標の1つである場合は、Spring 3.1以降で利用可能な@Cacheableアノテーション(およびその兄弟@CachePut@CacheEvictおよび)を確認してください。@Caching

于 2012-02-03T15:58:58.163 に答える