当前位置: 首页 > news >正文

北京网站开发公司一网天行动易后台 网站统计调查 报表类型怎样使用

北京网站开发公司一网天行,动易后台 网站统计调查 报表类型怎样使用,电商网站开发可行分析,wordpress 伪静态 分页本文是使用Spring Boot Java 8进行的异步REST应用程序工作的非常简单的示例。SpringBoot使Web应用程序的开发几乎非常容易#xff0c;但是为了简化任务#xff0c;我从Spring存储库中举了一个例子#xff0c;称为rest- service #xff0c;将其分叉到我自己的存储库中 Java 8进行的异步REST应用程序工作的非常简单的示例。SpringBoot使Web应用程序的开发几乎非常容易但是为了简化任务我从Spring存储库中举了一个例子称为rest- service 将其分叉到我自己的存储库中 并出于我的目的对其进行了更改以创建两个应用程序客户端和服务器。 我们的服务器应用程序将是一个简单的REST Web服务它将查询GitHub以获取一些用户数据并将其返回。 我们的客户端应用程序还将是REST Web服务……将查询第一个应用程序 服务器代码基本上由服务和控制器组成。 该服务使用带有Async批注的异步方法如下所示。 Service public class GitHubLookupService {private static final Logger logger LoggerFactory.getLogger(GitHubLookupService.class);private final RestTemplate restTemplate;public GitHubLookupService(RestTemplateBuilder restTemplateBuilder) {this.restTemplate restTemplateBuilder.build();}AsyncCompletableFutureUser findUser(String user) throws InterruptedException {logger.info(Looking up user);String url String.format(https://api.github.com/users/%s, user);User results restTemplate.getForObject(url, User.class);// Artificial delay of 1s for demonstration purposesThread.sleep(1000L);return CompletableFuture.completedFuture(results);}} 服务器控制器 RestController public class GitHubController {private final GitHubLookupService lookupService;Autowiredpublic GitHubController(GitHubLookupService lookupService) {this.lookupService lookupService;}RequestMapping(/user/{name})public CompletableFutureTimedResponseUser findUser(PathVariable(value name) String name) throws InterruptedException, ExecutionException {long start System.currentTimeMillis();ServerResponse response new ServerResponse(Thread.currentThread().getName());return lookupService.findUser(name).thenApply(user - {response.setData(user);response.setTimeMs(System.currentTimeMillis() - start);response.setCompletingThread(Thread.currentThread().getName());return response;});}} 我们这里拥有的是来自Java 8的简单CompletableFuture 借助thenApply我们将其转换为所需的格式该格式允许我们添加有关当前线程的一些数据以确保执行真正异步发生也就是说完成工作的线程不是开始工作的线程。 我们可以确定这一点运行应用程序并检查调用结果 marinaMarinas-MacBook-Pro:~$ http http://localhost:8080/user/mchernyavskaya HTTP/1.1 200 Content-Type: application/json;charsetUTF-8 Date: Mon, 02 Oct 2017 18:07:54 GMT Transfer-Encoding: chunked{completingThread: SimpleAsyncTaskExecutor-1,data: {avatar_url: https://avatars2.githubusercontent.com/u/538843?v4,company: OLX,location: Berlin, Germany,name: Maryna Cherniavska,url: https://api.github.com/users/mchernyavskaya},error: false,startingThread: http-nio-8080-exec-1,timeMs: 2002 } 现在我们需要创建一个将调用服务器应用程序的客户端应用 程序 。 在Spring中有一个非常方便的用于使用REST的类称为RestTemplate 。 但是RestTemplate是同步的我们在服务器应用程序中进行的所有不错的异步处理对客户端应用程序完全没有帮助。 这两个应用程序是完全独立的。 客户端应用程序只知道它将处理一个相当长时间的调用。 由于客户端应用程序知道这一点并且由于它可能不想在服务器应用程序查询的整个过程中都占用线程因此我们也将使其异步。 AsyncRestTemplate即将解救 我们的客户端应用程序将更加简单并将主要由控制器代码组成 。 要在一台本地计算机上运行两个应用程序我们需要使用-Dserver.port 8082参数更改服务器的端口。 因此我们的服务器现在位于localhost8080上客户端位于localhost8082上。 客户端控制器主要如下。 RestController public class GitHubController {private static final String BASE_URL http://localhost:8080/;private final AsyncRestTemplate asyncRestTemplate new AsyncRestTemplate();RequestMapping(/async/user/{name})public ListenableFutureClientResponse findUserAsync(PathVariable(value name) String name)throws InterruptedException, ExecutionException {long start System.currentTimeMillis();ClientResponse clientResponse new ClientResponse(Thread.currentThread().getName());ListenableFutureResponseEntityServerResponse entity asyncRestTemplate.getForEntity(BASE_URL name, ServerResponse.class);entity.addCallback(new ListenableFutureCallbackResponseEntityServerResponse() {Overridepublic void onFailure(Throwable ex) {clientResponse.setError(true);clientResponse.setCompletingThread(Thread.currentThread().getName());clientResponse.setTimeMs(System.currentTimeMillis() - start);}Overridepublic void onSuccess(ResponseEntityServerResponse result) {clientResponse.setData(result.getBody());clientResponse.setCompletingThread(Thread.currentThread().getName());clientResponse.setTimeMs(System.currentTimeMillis() - start);}});} } 我们正在获取服务器响应并将其包装到有关时序和当前线程的更多数据中以便更好地了解发生了什么。 AsyncRestTemplate提供了一个ListenableFuture 但是我们用它完成了一个CompletableFuture 因为它允许我们手动控制未来返回的时刻并在此过程中转换输出。 当我们调用客户服务时它返回以下数据 marinaMarinas-MacBook-Pro:~$ http http://localhost:8082/async/user/mchernyavskaya HTTP/1.1 200 Content-Type: application/json;charsetUTF-8 Date: Mon, 02 Oct 2017 18:28:36 GMT Transfer-Encoding: chunked{completingThread: SimpleAsyncTaskExecutor-1,data: {completingThread: SimpleAsyncTaskExecutor-3,data: {avatar_url: https://avatars2.githubusercontent.com/u/538843?v4,company: OLX,location: Berlin, Germany,name: Maryna Cherniavska,url: https://api.github.com/users/mchernyavskaya},error: false,startingThread: http-nio-8080-exec-7,timeMs: 1403},error: false,startingThread: http-nio-8082-exec-3,timeMs: 1418 } 您可以在此处阅读有关Spring中异步方法的更多信息但是这个简单的示例应该可以帮助您了解事物的工作方式。 完整的代码在存储库中 。 希望它有一定用处 翻译自: https://www.javacodegeeks.com/2017/10/call-asynchronous-rest.html
http://wiki.neutronadmin.com/news/94945/

相关文章:

  • 东莞市建设培训中心网站安庆网站建设公司简
  • 免费行业网站源码南宁新技术产业建设开发总公司网站
  • 千锋培训江苏网站优化
  • 网站设计对网站建设有哪些意义?网站推广在线推广
  • 网站制作生成器浙江省建设业协会网站
  • 东莞订制网站建设wordpress上传到空间
  • 网站开发制作公wordpress访问速度
  • 陕西省煤炭建设公司第一中学官方网站推广链接点击器安卓版
  • 婚纱摄影行业网站中国商检局做备案网站
  • 江西建设职业技术学院最新官方网站wordpress支付宝免签约
  • 摄影网站功能设计注册个公司大概要多少钱
  • 重庆网站建设运营wordpress 外链接口
  • 武威市凉州区建设局网站全能网站建设完全自学手册
  • 会员发布网站建设餐饮vi设计案例
  • 重庆微信企业网站开一个网站建设公司
  • 顺德网站建设合理使用颜色搭配_方能达到最佳视觉效果本地手机网站建设
  • 哪有做网站 的京东代运营
  • 做宴会网站wordpress 压力
  • 网站建设实验目的电商网站通用左侧弹出导航
  • Python视频直播网站开发wordpress woocommerce 支付宝
  • 网站搭建技术方案wordpress主题 个人博客
  • 邯郸做网站哪儿好济南企业型网站
  • 网站seo关键词优化技巧杭州网站如何制作
  • 做网站有意思吗?网站开发tt0546
  • 网站排名总是不稳定模版ppt
  • 回老家做PHP网站定西市城乡建设局网站
  • php网站开发 vip批量入侵wordpress
  • 网站版面如何布局视频设计师是干什么的
  • 外包网站开发合同网站开发项目的前端后端数据库
  • 网站页面设计合同网站seo诊断书