CompletableFuture e Spring
Sfruttare Spring per integrare i
CompletableFuture di Java 8
Sommario
● Configurazione maven (pom.xml)
● Avvio del contesto
● Il componente preposto alla chiamata onerosa
● L’uso del componente
● Lancio dell’applicativo
Configurazione maven (pom.xml)
● Versione minimale
● Compatibilità con Java 8
● Dipendenze spring-core e spring-context
● Esternalizzazione della versione di Spring
Avvio del contesto
● Avvio del contesto alla riga 22
● Annotazioni necessarie (righe 15-17)
– @Configuration: il contesto spring usa questa classe per caricarsi
– @ComponentScan: rende disponibile in bean FuturProvider
– @EnableAsync: rende disponibile la chiamata asincrona all’interno
di questa configuration
● @Bean taskExecutor: (riga 49) istruisce Spring sul
componente da usare per avviare i thread asincroni
Il componente preposto alla
chiamata onerosa
● E’ un component standard di Spring
● Necessario per il metodo che espone la chiamata
onerosa
– Annotazione con @Async (se la chiamata al metodo
asnyc non parte da un altro componente,
l’annotazione non viene considerata)
– Ritorno di tipo CompletableFuture<T>
L’uso del componente
● Un ciclo di 5 chiamate a scopo statistico (riga 27)
● Chiamata “classica” alla riga 29
● Prima callback alla riga 31
● Seconda callback in cascata con ritorno alla riga 37
● Terza callback in cascata con ritorno alla riga 41
● Flusso sincrono alla riga 45
Lancio dell’applicativo
● Thread “main” con stampa riga 28 e 46
● SimpleTaskExecutor (uno nuovo per chiamata a
future, non efficiente) con stampe di riporto
esecuzione e successive composizioni (righe
33,35,38,41)
● ThreadPoolTaskExecutor (uno solo per le 5
esecuzioni grazie al pooling, più efficiente)
Con SimpleExecutor
Con ThreadPoolExecutor

Integrare completablefuture con Spring

  • 1.
    CompletableFuture e Spring SfruttareSpring per integrare i CompletableFuture di Java 8
  • 2.
    Sommario ● Configurazione maven(pom.xml) ● Avvio del contesto ● Il componente preposto alla chiamata onerosa ● L’uso del componente ● Lancio dell’applicativo
  • 3.
    Configurazione maven (pom.xml) ●Versione minimale ● Compatibilità con Java 8 ● Dipendenze spring-core e spring-context ● Esternalizzazione della versione di Spring
  • 5.
    Avvio del contesto ●Avvio del contesto alla riga 22 ● Annotazioni necessarie (righe 15-17) – @Configuration: il contesto spring usa questa classe per caricarsi – @ComponentScan: rende disponibile in bean FuturProvider – @EnableAsync: rende disponibile la chiamata asincrona all’interno di questa configuration ● @Bean taskExecutor: (riga 49) istruisce Spring sul componente da usare per avviare i thread asincroni
  • 7.
    Il componente prepostoalla chiamata onerosa ● E’ un component standard di Spring ● Necessario per il metodo che espone la chiamata onerosa – Annotazione con @Async (se la chiamata al metodo asnyc non parte da un altro componente, l’annotazione non viene considerata) – Ritorno di tipo CompletableFuture<T>
  • 9.
    L’uso del componente ●Un ciclo di 5 chiamate a scopo statistico (riga 27) ● Chiamata “classica” alla riga 29 ● Prima callback alla riga 31 ● Seconda callback in cascata con ritorno alla riga 37 ● Terza callback in cascata con ritorno alla riga 41 ● Flusso sincrono alla riga 45
  • 11.
    Lancio dell’applicativo ● Thread“main” con stampa riga 28 e 46 ● SimpleTaskExecutor (uno nuovo per chiamata a future, non efficiente) con stampe di riporto esecuzione e successive composizioni (righe 33,35,38,41) ● ThreadPoolTaskExecutor (uno solo per le 5 esecuzioni grazie al pooling, più efficiente)
  • 12.
  • 13.