0

REST サービスに Spring MVC コントローラーを使用しています。DispatcherServlet の GET および POST 動作をオーバーライドしたいと考えています。GET および POST リクエスト中に何らかの条件が満たされたときにカスタム ロジックを実行したい、それ以外の場合は DispatcherServlet 実装にフォールバックします。

Spring の DispatcherServlet から派生したカスタム サーベットを実装しました。HttpServlet インターフェースにはメソッド doGet() および doPost() がありますが、これらのメソッドは DispatcherServlet またはその基本クラスのいずれかで final として宣言されているようです。したがって、doGet() と doPost() をオーバーライドできませんでした。

ドキュメントから、オーバーライド可能な doService() と doDispatch() の 2 つのメソッドを見つけました。これら2つの方法の違いについて混乱しています。

  1. doService() または doDispatch() のどちらのメソッドをオーバーライドする必要がありますか?
  2. doService() と doDispatch() の違いは何ですか?
  3. GET または POST である http リクエストを特定する方法は?

ありがとう。

4

1 に答える 1

0

それを行う正しい方法は、を作成することFilterです。

ただし、リクエストのペイロードを検査すること自体は単純なことではないことに注意してください。ペイロードを読み取った後は、余分な労力を払わなければ「読み取りを解除」できないためです。たとえば、RESTful 投稿データをログに記録するにはどうすればよいですか? を参照してください。

ただし、フィルターを使用する代わりにメソッドをオーバーライドDispatcherServletしても、とにかく単純になるわけではありません。物事がわかりにくくなり、SRPに違反するだけです。

于 2013-06-26T16:54:32.857 に答える