как указано в комментариях, вы можете использовать асинхронную функциональность из Spring. Для этого вам понадобится такая конфигурация, как
@EnableAsync
@Configuration
public class AsyncConfig {
@Bean
public Executor threadPoolTaskExecutor() {
return new ConcurrentTaskExecutor(Executors.newCachedThreadPool());
}
}
затем добавьте аннотацию к методу, выполняющему фоновую задачу
@Async
void runBgTask() { /* ... */ }
и вызовите его в вашем методе контроллера
@GetMapping("/foo")
public Foo hello() {
runBgTask();
return new Foo();
}