Spring Boot文档阅读笔记-Creating Asynchronous Methods解析
创建一个GitHub用户信息查找服务,这个服务是通过GitHub的API获取数据的。
接口是http的,如下:
这里创建一个model去接收对象:
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class User {private String name;private String blog;
}
@JsonIngnore告诉spring忽略其他json属性。
下面是创建GitHub检索服务,代码如下:
@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();}public CompletableFuture<User> 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);Thread.sleep(1000L);return CompletableFuture.completedFuture(results);}
}
GItHubLookupService使用RestTemplate调用api.github.com/users,获取User对象。
AppRunner.java
@Component
public class AppRunner implements CommandLineRunner {private static final Logger logger = LoggerFactory.getLogger(AppRunner.class);private final GitHubLookupService gitHubLookupService;public AppRunner(GitHubLookupService gitHubLookupService){this.gitHubLookupService = gitHubLookupService;}@Overridepublic void run(String... args) throws Exception {long start = System.currentTimeMillis();CompletableFuture<User> pivotalSoftware = gitHubLookupService.findUser("PivotalSoftware");CompletableFuture<User> cloudFoundry = gitHubLookupService.findUser("CloudFoundry");CompletableFuture<User> user = gitHubLookupService.findUser("Spring-Projects");CompletableFuture.allOf(pivotalSoftware, cloudFoundry, user).join();logger.info("Elapsed time: " + (System.currentTimeMillis() - start));logger.info("-->" + pivotalSoftware.get());logger.info("-->" + cloudFoundry.get());logger.info("-->" + user.get());logger.info("---------- over ----------");}
}
DemoApplication.java
@SpringBootApplication
@EnableAsync
public class DemoApplication {@Beanpublic Executor taskExecutor(){ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();executor.setCorePoolSize(2);executor.setMaxPoolSize(2);executor.setQueueCapacity(500);executor.setThreadNamePrefix("GithubLookup-");executor.initialize();return executor;}public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);}}
Spring Boot文档阅读笔记-Creating Asynchronous Methods解析相关推荐
- Spring Boot文档阅读笔记-exception handling–@ExceptionHandler解析与实例
程序结构如下: 源码如下: CustomExceptionHandler.java package com.example.demo.controller;import com.example.dem ...
- Spring Boot文档阅读笔记-Validating Form Input解析
这篇文章的主要功能是Web应用程序中验证表单输入是否合法的文章. PersonForm对象 首先创建一个PersonForm对象: 这个对象会验证PersonForm的用户名,代码如下: packag ...
- Spring Boot文档阅读笔记-how-to-implement-2-way-ssl-using-spring-boot
two-way-ssl需要12次握手(除去TCP的三次握手),如下图: 双向认证过程: 1.客户端发送ClientHello消息,告诉服务端要使用SSL. 2.客户端发送ServerHello的响应, ...
- Spring Boot文档阅读笔记-EhCache的使用
这里要先注意2个概念: buffer和cache,很多人会讲这两个概念混用.但其实这是两个概念! buffer:一般是指存储临时数据的实体.只能读写一次,对于程序员来说buffer是可见的,比如TCB ...
- Spring Boot文档阅读笔记-Spring Boot @Bean解析
利用SpringBoot的@Bean创建一个简单的Bean. Spring的@Bean注解是放在方法上的,带上这个注解的方法会被Spring容器管理.并且这个方法要返回一个值(对象),这个值和对象会被 ...
- Spring Boot文档阅读笔记-对Securing a Web Application解析
首先创建一个非安全的Web应用 这个应用包含两个页面,一个是home页面,一个是"Hello,World"页面.home页面使用Thymeleaf,相关代码如下: <!DOC ...
- Spring Boot文档阅读笔记-构建Restful风格的WebService客户端
对应的maven如下: <?xml version="1.0" encoding="UTF-8"?> <project xmlns=" ...
- Spring Boot文档阅读笔记-构建Restful风格的WebService
Maven代码如下: <?xml version="1.0" encoding="UTF-8"?> <project xmlns=" ...
- Spring Boot文档阅读笔记-对Messaging with RabbitMQ解析
此篇教程以Rabbitmq作为消息队列服务端,使用Spring Boot产生和发布消息. 使用Spring AMQP的RabbitTemplate发布消息,使用MessageListenerAdapt ...
最新文章
- 回归、线性回归和逻辑回归【逻辑回归部分待完成】
- KDDockWidgets源码编译及安装
- LIN总线接口静电保护专用器件:DW24DLC-B-S和DW24D-B-S
- SAP Cloud for Customer Sales Order Pricing Date的配置
- 3dmax模型转换为*.FLT格式的建模要点
- 2022年考研计算机组成原理_2 数据表示和运算
- easyui下拉选项多怎么解决_30岁以后皮肤松弛皱纹越来越多怎么办?这组瑜伽帮你解决...
- win7 梦幻桌面下载地址
- 昆腾公司稍感安慰:向外扩展存储业务营收有所提升
- IntelliJ IDEA - 自定义 TODO
- 625线,525线什么意思?
- 使用Vivado软件进行硬件调试
- mysql 主辅_Mysql的实时同步 - 主辅同步
- LFS(linux for stratch)关于急救盘的制作问题
- javascript--经典实例锦集
- mysql查询员工最高最低工资三种方式
- 通俗讲解MOSFET
- 徐无忌MySQL笔记:索引的使用规则
- 计算机专业浅谈:都说这行业35岁失业,是真的嘛?
- 使用yum高速部署Oracle安装环境(11g)