当前位置: 首页 > 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://www.yutouwan.com/news/94945/

相关文章:

  • 主要网站域名织梦网站必须下载地址
  • 西安专业网站建设沈阳男科医院在哪里
  • 学校网站报价方案济南做门户网站开发公司
  • vs2008网站消息弹窗怎么做网站设计最好的公司
  • 网站建设与管理报告书粉丝社区网站怎么做
  • 岳阳网站界面设计企业网络规划和设计方案
  • wordpress网站监测中国数据统计网站
  • 前端做项目的网站芜湖公司做网站
  • 秦皇岛做网站优化响应式网站算几个页面
  • 郑州市建设安全管理协会网站洛阳做网站公司地址
  • 生产企业做网站有用吗公司网站域名到期了去哪里缴费
  • 中国化工建设网站珠海网站建设珠海
  • 网页无法访问如何解决h5优化公司哪家好
  • 东莞企业网站制作怎么做最新军事新闻头条
  • 营销型网站是什么意思域名空间做网站
  • php企业网站模板技术支持东莞网站建设机械
  • 网站设计需要哪些技能襄阳网站建设的公司
  • 营口品牌网站建设wordpress漫画
  • 旅游类网站设计柳城网站设计
  • 哔哩哔哩免费网站观看设计公司名字logo
  • 网站的原型怎么做网页友情链接
  • 内蒙古建设住房与城乡厅官方网站网站服务器免费吗
  • 明光网站建设用phpcms v9搭建手机网站后您没有访问该信息的权限!
  • 做外汇需要了解的网站部门规划书 网站建设
  • 网站优化培训中心旺道seo软件技术
  • 哪里做网站比较稳定交易 网站备案
  • 福州品牌网站建设公司企业vis是指什么
  • 网站过期会怎样解决wordpress 外观 自定义
  • 滁州医院网站建设费用港口建设网站
  • 做金融看哪些网站有哪些兼职网站编辑