Spring 4の新特性:

3591 ワード

Spring 4からServlet 3をServlet 3として開発されていますが、Spring MVCのテストフレームを使うとServlet 3対応のjarパッケージを指定する必要があります.また、Request Mappingの各@Request Mapping方法に追加する必要はありません.  @ResponseBody 。 AsyncRestTemplate ,RESTクライアントの非同期サポートをサポートします.
 
1、@RertController
@RertController   public クラス UserController {       prvate UserService userService       @Autowired       public UserController(UserService) user Service) {           this.userService = userService       }       @Request Mapping(「/test」)         public User view() {           User user = new User();           user.setId(1 L)           user.set Name(「hahaha」)           return user;       }          @Request Mapping(「/test 2」)       public String view 2() {           return 「\」id\" : 1)「;       }   )  その実現は@Rest Controllerに@ResponseBodyを追加することです.
@org.springframe ewark.stereotype.sotroller   @org.springframe ebook.web.bind.annotations.ResonseBody   public @インターフェース Reset Controller {   )  このようにあなたがResetサーバを開発する時には、spring-mvcプロファイルに必要なコードは極めて少なく、次の行だけが必要かもしれません.
<context:component-scan base-package=「comp.sishuk.spring 4」/>   <mvc:annotatio-driven/>  2、mvc:annotationn-driven配置の変化
スタイルを統一する enable MatrixVarablesをenable-matrix-variables属性に変更し、ignoreDefault ModelOnRedirectをInore-default model-on-redictに変更します.
 
3、クライアント非ブロッキング非同期サポートのためにAync RertTemplateを提供します.
3.1、サーバ端
サーバー側のスプリングmvc開発については参考にできます.https://github.com/zhangkaitao/servlet3-showcaseの中のchapter 3-sprigmvc
@RertController   public クラス UserController {       prvate UserService userService       @Autowired       public UserController(UserService) user Service) {           this.userService = userService       }       @Request Mapping(「/appi」)         public Callable app() {           System.out.println(===hello);           return new Callable() {               @オーバーライド               public User コール ローソン Exception {                   Thread.sleep(10 L * 1000) //2秒停止                   User user = new User();                   user.setId(1 L)                   user.set Name(「hahaha」)                   return user;               }           };       }   )  非常に簡単です.サーバー側は10秒停止して結果を返します.具体的には私のgithubのコードを参照してください.
 
3.2、クライアント
public static void main(String[] アークス {       Aync Restit Template template = new Async Restit Template();       //呼び出しが完了したらすぐに戻ります.ブロックはありません.       Listenable Future<ResonseEntity<User> future = template.get ForEntity("http://localhost:9080/spring4/api「 User.class)       //非同期コールバックを設定します       future.addCallback(new Listenable FutureCallback<ResonseEntity<User>() {           @オーバーライド           public void オンススーツ レスリング {               System.out.printl(===client) get レスリング : " + レスリング.get Body();           }              @オーバーライド           public void onFailure(Throwable) t) {               System.out.printl(===client) failure : 「 + t)           }       });       System.out.println(==no wait");   )  ここでFutureを使って渋滞ではないことを完成します.そうすると、私たちもフィードバックインターフェースをあげて結果を取ります.FutureとCallableはペアです.一つの消費結果は発生します.テンプレートを呼び出したらすぐに戻ってきます.ブロックされません.結果があれば、コールします.
 
Async RertTemplateはデフォルトでは、java.net.HttpURLConnectoryによって実現されます.また、appheのhttp componentsも使用できます.template.sets Ayncrequest Factoryを使用して設定します.
ここでFutureを使って渋滞ではないことを完成します.そうすると、私たちもフィードバックインターフェースをあげて結果を取ります.FutureとCallableはペアです.一つの消費結果は発生します.テンプレートを呼び出したらすぐに戻ってきます.ブロックされません.結果があれば、コールします.
 
Async RertTemplateはデフォルトでは、java.net.HttpURLConnectoryによって実現されます.また、appheのhttp componentsも使用できます.template.sets Ayncrequest Factoryを使用して設定します.