为什么在这个例子中使用了一个 Bean - 它看起来像是毫无意义的间接寻址?

在这个如何设置异步服务的示例中,出于某种原因,RestTemplate 以非常迂回的方式设置。


为什么异步例程本身不能声明一个新的 RestTemplate?


@Service

public 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);

    }

 //...


慕姐8265434
浏览 94回答 1
1回答

智慧大石

为什么异步例程本身不能声明一个新的 RestTemplate?显然这里没有价值。如果没有在其他地方重用,RestTemplate可以简单地用操作符创建。如果我们想在其他地方重用&nbsp;它,声明它是有意义的。&nbsp;它确实在另一个需要它的 bean 中提供了单例可注入/可重用。&nbsp;但通常我们不会像这段代码那样在一个类中这样做,而是在一个更全局的配置类中这样做。&nbsp;new@Bean@Service
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java