Spring 4の新特性:
3591 ワード
Spring 4からServlet 3をServlet 3として開発されていますが、Spring MVCのテストフレームを使うとServlet 3対応のjarパッケージを指定する必要があります.また、Request Mappingの各@Request Mapping方法に追加する必要はありません.
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を使用して設定します.
@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
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を使用して設定します.