日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring4新特性——Web开发的增强

發布時間:2025/4/16 javascript 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring4新特性——Web开发的增强 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

Spring4新特性——泛型限定式依賴注入

Spring4新特性——核心容器的其他改進

Spring4新特性——Web開發的增強

Spring4新特性——集成Bean Validation 1.1(JSR-349)到SpringMVC?

Spring4新特性——Groovy Bean定義DSL

Spring4新特性——更好的Java泛型操作API?

Spring4新特性——JSR310日期API的支持

Spring4新特性——注解、腳本、任務、MVC等其他特性改進?

?

從Spring4開始,Spring以Servlet3為進行開發,如果用Spring MVC 測試框架的話需要指定Servlet3兼容的jar包(因為其Mock的對象都是基于Servlet3的)。另外為了方便Rest開發,通過新的@RestController指定在控制器上,這樣就不需要在每個@RequestMapping方法上加?@ResponseBody了。而且添加了一個AsyncRestTemplate?,支持REST客戶端的異步無阻塞支持。

?

1、@RestController

@RestController public class UserController {private UserService userService;@Autowiredpublic UserController(UserService userService) {this.userService = userService;}@RequestMapping("/test")public User view() {User user = new User();user.setId(1L);user.setName("haha");return user;}@RequestMapping("/test2")public String view2() {return "{\"id\" : 1}";} }

?其實現就是在@@RestController中加入@ResponseBody:

@org.springframework.stereotype.Controller @org.springframework.web.bind.annotation.ResponseBody public @interface RestController { }

這樣當你開發Rest服務器端的時候,spring-mvc配置文件需要的代碼極少,可能就僅需如下一行:

<context:component-scan base-package="com.sishuok.spring4"/><mvc:annotation-driven/>

??

2、mvc:annotation-driven配置變化

統一風格;將?enableMatrixVariables改為enable-matrix-variables屬性;將ignoreDefaultModelOnRedirect改為ignore-default-model-on-redirect。

?

3、提供AsyncRestTemplate用于客戶端非阻塞異步支持。

3.1、服務器端

對于服務器端的springmvc開發可以參考https://github.com/zhangkaitao/servlet3-showcase中的chapter3-springmvc

@RestController public class UserController {private UserService userService;@Autowiredpublic UserController(UserService userService) {this.userService = userService;}@RequestMapping("/api")public Callable<User> api() {System.out.println("=====hello");return new Callable<User>() {@Overridepublic User call() throws Exception {Thread.sleep(10L * 1000); //暫停兩秒User user = new User();user.setId(1L);user.setName("haha");return user;}};} }

非常簡單,服務器端暫停10秒再返回結果(但是服務器也是非阻塞的)。具體參考我github上的代碼。

?

3.2、客戶端

public static void main(String[] args) {AsyncRestTemplate template = new AsyncRestTemplate();//調用完后立即返回(沒有阻塞)ListenableFuture<ResponseEntity<User>> future = template.getForEntity("http://localhost:9080/spring4/api", User.class);//設置異步回調future.addCallback(new ListenableFutureCallback<ResponseEntity<User>>() {@Overridepublic void onSuccess(ResponseEntity<User> result) {System.out.println("======client get result : " + result.getBody());}@Overridepublic void onFailure(Throwable t) {System.out.println("======client failure : " + t);}});System.out.println("==no wait");}

?此處使用Future來完成非阻塞,這樣的話我們也需要給它一個回調接口來拿結果; Future和Callable是一對,一個消費結果,一個產生結果。調用完模板后會立即返回,不會阻塞;有結果時會調用其回調。

?

AsyncRestTemplate默認使用SimpleClientHttpRequestFactory,即通過java.net.HttpURLConnection實現;另外我們也可以使用apache的http components;使用template.setAsyncRequestFactory(new HttpComponentsAsyncClientHttpRequestFactory());設置即可。

?

另外在開發時盡量不要自己注冊如:

<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">

盡量使用

<mvc:annotation-driven/>

它設計的已經足夠好,使用子元素可以配置我們需要的配置。

??

且不要使用老版本的:

<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"/> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">

否則可能得到如下異常:

寫道 Circular view path [login]: would dispatch back to the current handler URL [/spring4/login] again. Check your ViewResolver setup! (Hint: This may be the result of an unspecified view, due to default view name generation.)

??

轉載于:https://my.oschina.net/qjx1208/blog/200805

總結

以上是生活随笔為你收集整理的Spring4新特性——Web开发的增强的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。