Operațiunile consumatoare de timp (trimiterea de email-uri, generarea de PDF-uri sau apelurile către servicii terțe lente) nu ar trebui să țină blocată cererea utilizatorului. Prin activarea @EnableAsync, orice metodă adnotată cu @Async va fi delegată automat unui fir de execuție dintr-un pool dedicat (ThreadPoolTaskExecutor).
Metodele asincrone pot avea tipul returnat void (execută și uită – fire and forget) sau pot returna instanțe CompletableFuture<T> pentru compunerea ulterioară a rezultatelor.
Exemplu: Trimitere asincronă de notificări cu CompletableFuture
package ro.dexblog.demo.service;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Service;
import java.util.concurrent.CompletableFuture;
@Configuration
@EnableAsync
class AsyncConfig {}
@Service
public class EmailDispatcherService {
@Async
public CompletableFuture sendEmailAsync(String to, String body) {
try {
Thread.sleep(2000); // Simulăm operație I/O lentă
System.out.println("Email expediat în fundal către: " + to);
return CompletableFuture.completedFuture(true);
} catch (InterruptedException e) {
return CompletableFuture.completedFuture(false);
}
}
}
Întrebări & Exemple de Cod:
@Async și @EnableAsync în Spring BootAi o nelămurire despre utilizarea comenzii
@Async și @EnableAsync în Spring Bootsau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!
Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.