Spring 4.0新特性------Web开发的增强
来源:互联网 发布:淘宝客服面试注意事项 编辑:程序博客网 时间:2024/06/04 23:30
一、@RestController
为了方便Rest开发,通过新的@RestController指定在控制器上,这样就不需要在每个@RequestMapping方法上加@ResponseBody了。而且添加了一个AsyncRstTemplate,支持REST客户端的异步无阻塞支持。
@RestController public class UserController { private UserService userService; @Autowired public UserController(UserService userService) { this.userService = userService; } @RequestMapping("/login") public User view() { User user = new User(); user.setId(1L); user.setName("haha"); return user; } @RequestMapping("/test2") public String view2() { return "{\"name\" : pudge}"; } }
这样当你开发Rest服务器端的时候,spring-mvc只需要简单的配置一下,如下:<context:component-scan base-package="com.hwj.spring4"/> <mvc:annotation-driven/>
统一风格,将 enableMatrixVariables改为enable-matrix-variables属性,将ignoreDefaultModelOnRedirect改为ignore-default-model-on-redirect。
三、提供AsyncRestTemplate用于客户端非阻塞异步支持。
3.1、服务器端
非常简单,服务器端暂停10秒再返回结果(但是服务器也是非阻塞的)。
@RestController public class UserController { private UserService userService; @Autowired public UserController(UserService userService) { this.userService = userService; } @RequestMapping("/api") public Callable<User> api() { System.out.println("=====hello"); return new Callable<User>() { @Override public User call() throws Exception { Thread.sleep(10L * 1000); //暂停两秒 User user = new User(); user.setId(1L); user.setName("haha"); return user; } }; } }
此处使用Future来完成非阻塞,这样的话我们也需要给它一个回调接口来拿结果; Future和Callable是一对,一个消费结果,一个产生结果。调用完模板后会立即返回,不会阻塞;有结果时会调用其回调。
AsyncRestTemplate默认使用SimpleClientHttpRequestFactory,即通过java.net.HttpURLConnection实现;另外我们也可以使用apache的http components;使用template.setAsyncRequestFactory(new HttpComponentsAsyncClientHttpRequestFactory());设置即可。
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>>() { @Override public void onSuccess(ResponseEntity<User> result) { System.out.println("======client get result : " + result.getBody()); } @Override public void onFailure(Throwable t) { System.out.println("======client failure : " + t); } }); System.out.println("==no wait"); }
阅读全文
1 0
- Spring 4.0新特性------Web开发的增强
- Spring4新特性——Web开发的增强
- Spring4新特性——Web开发的增强
- asp.net 4.0 新特性之web.config的改进, ViewStateMode, ClientIDMode, EnablePersistedSelection, 控件的其他一些增强点
- Groovy 1.8 新特性: 增强的 AST
- 新特性-对Data Pump的增强
- java8新特性之一:接口的增强
- Oracle12c功能增强 新特性之管理功能的增强
- Spring4.1新特性——Spring缓存框架增强
- Spring4.1新特性——Spring MVC增强
- Spring4.1新特性——Spring缓存框架增强
- Spring4.1新特性——Spring缓存框架增强
- Spring4.1新特性——Spring缓存框架增强
- Spring4.1新特性——Spring MVC增强
- Firefox3与WEB客户端开发相关的新特性
- JSF-Spring的新特性
- Spring 2.0 的新特性
- JAVA基础增强(新特性)
- 求出0~999之间的所有“水仙花数”并输出
- Spring cloud系列九 Hystrix的配置属性优先级和详解
- Navmeshagent与飞行(3)
- 模拟实现strchar函数
- JavaScript 实例:当当网 点击展开效果
- Spring 4.0新特性------Web开发的增强
- 通用组、全局组、本地域组的区别
- nodejs学习笔记-第一课
- C语言实验——打印菱形
- GIS结合BIM技术在数字城市中的应用
- POJ3468 线段树模板
- memcached-1.4.13 + repcached 自动安装脚本
- opencv学习笔记--使用opencv打开一张图片
- LightOJ