在这个如何设置异步服务的示例中,出于某种原因,RestTemplate 以非常迂回的方式设置。为什么异步例程本身不能声明一个新的 RestTemplate?@Servicepublic class AsyncService { private static Logger log = LoggerFactory.getLogger(AsyncService.class); @Autowired private RestTemplate restTemplate; @Bean public RestTemplate restTemplate() { return new RestTemplate(); } @Async("asyncExecutor") public CompletableFuture<EmployeeNames> getEmployeeName() throws InterruptedException { log.info("getEmployeeName starts"); EmployeeNames employeeNameData = restTemplate.getForObject("http://localhost:8080/name", EmployeeNames.class); log.info("employeeNameData, {}", employeeNameData); Thread.sleep(1000L); //Intentional delay log.info("employeeNameData completed"); return CompletableFuture.completedFuture(employeeNameData); } //...
1 回答
智慧大石
TA贡献1946条经验 获得超3个赞
为什么异步例程本身不能声明一个新的 RestTemplate?
显然这里没有价值。如果没有在其他地方重用,RestTemplate
可以简单地用操作符创建。如果我们想在其他地方重用 它,声明它是有意义的。 它确实在另一个需要它的 bean 中提供了单例可注入/可重用。 但通常我们不会像这段代码那样在一个类中这样做,而是在一个更全局的配置类中这样做。 new
@Bean
@Service
添加回答
举报
0/150
提交
取消