@RertController注解初歩的理解

3400 ワード

一、Spring中@RestitControllerの役割は@Controller+@ResponseBodyに相当します.
だから、@RestControllerの注釈を理解するには、@Controllerと@ResponseBodyの注釈を先に知っておく必要があります.
二、@Controllerコメント
一つのクラスに@Controllerコメントを追加して、このクラスがコントローラ類であることを示しています.しかし、このクラスを処理要求のプロセッサにしたいなら、@Controllerの注釈があるだけでは足りないです.彼はさらに修練してプロセッサになる必要があります.
1.spring容器にこのクラスの例を作成します.インスタンスを作成する方法は2つあります.
  
このような方式はスプリング容器にシングルバーンを注入していますが、プロジェクトが大きく、コントローラ類が多い場合、このようにSpring容器にbeanを注入するのは非常に悩ましいので、いっそのこと第二の方法があります.
  
このように指定されたパケットのすべてのクラスをスキャンし、対応するbeanを生成してspring容器に注入する.このような方法を使うと、当然、開発効率が大幅に向上しますが、あるタイプのクラスがスプリング容器に注入したくない場合があります.
この時は第二の方法も解決できます.
  
      
  
上記のコードはスキャンtestパッケージに@Serviceコメント以外の種類があることを示しています.
2.@Controller注释のクラスをSpring容器に注入すると、このクラスがプロセッサの第一歩となり、大成するためには、このクラスに注釈@Request Mappingを追加する必要があります.
@Request Mapping注釈は、要求をマッピングするためのものであり、すなわち、プロセッサがどのURL要求を処理することができるかを示すものであり、この注釈はクラスでも使用できるし、方法でも使用できる.
@Request Mappingを使用してコントローラ類をマーキングする場合、方法の要求アドレスは相対的な要求アドレスである.@Request Mappingタグを使用していない場合、方法の要求アドレスは絶対パスです.
@Request Mappingのアドレスはuri変数であり、@PathVarable注解により方法としてのパラメータを取得することができます.要求アドレスをフィルタするワイルドカードでも良いです.具体的な使い方は今回のポイントではなく、興味のあるものは見てもいいです.
    https://www.cnblogs.com/xiepeixing/p/4243288.html
 1   @Controller
 2   @RequestMapping("/user")
 3   public class UserController{
 4         
 5       @RequestMapping("/users")
 6       public String users() {
 7           return "users";
 8       }
 9     
10
11   }
この時、usersメソッドを要求するurlパスは…/user/usersです.
上記のUSersメソッドの戻り値は文字列タイプであることが分かります.これはプロセッサがタスクを処理した後にジャンプするページです.もし方法があれば、直接結果を返します.ジャンプページではなく、@ResonseBody注を使います.
三、@ResonseBodyコメント
@ResponseBodyは、メソッドの戻り値を直接に指定されたフォーマットでHttp reponse bodyに書き込み、ジャンプ先として解析するのではありません.
フォーマットの変換はHttpMessage Coverterの方法によって実現される.これはインターフェースであるため、実際のクラスによって変換が完了する.
もし要求方法がjson形式のデータを返すならば、ジャンプページではなくて、直接クラスに@RestitControllerを表示することができて、各方法の中で@ResonseBodyを表示しないで、開発過程を簡略化しました.
@RertControllerを理解する過程で、下記のようなブログを参考にしました.ありがとうございます.
https://www.cnblogs.com/daimajun/p/7152970.html
https://blog.csdn.net/l358366885/article/details/79485497
https://blog.csdn.net/sunroyfcb/article/details/81048675