gpt4 book ai didi

java - 立即发送 Spring 响应流而不是等到方法返回

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:05:52 26 4
gpt4 key购买 nike

我有一个看起来像这样的请求映射:

private final static byte[] byteArray = ...;

@RequestMapping(value=Array("/foobar"))
void sendByteArray(@RequestBody Request request, OutputStream os) {
os.write(byteArray);
os.flush();
doLengthyCleanup();
}

我发现请求客户端直到服务完成 doLengthyCleanup() 后才真正收到响应主体。

由于清理不会影响响应本身,我想通过在发送响应之后执行清理来缩短响应时间。我该怎么做?

最佳答案

@RequestMapping(value=Array("/foobar"))
void sendByteArray(@RequestBody Request request, OutputStream os) {
os.write(byteArray);
os.flush(); // not sure
doLengthyCleanup();
}

@Async
void doLengthyCleanup() {
// this will be executed asynchronously
}

更新:取自this question

如果您从同一类中的另一个方法调用 @Async 方法,除非您为 @EnableAsync 启用 AspectJ 代理模式(当然还提供编织器),否则它将不起作用(谷歌“代理自调用” ).最简单的解决方法是将 @Async 方法放在另一个 @Bean 中。

关于java - 立即发送 Spring 响应流而不是等到方法返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37551716/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com