Spring AI: il modo più "Java" di fare GenAI in azienda

Spring, Java e Generative AI?

Fin dalla nascita dell’AI generativa, Python ha rappresentato il linguaggio di riferimento, grazie a strumenti e librerie specifiche.

Tuttavia, con l’arrivo di Spring AI, versione ufficiale rilasciata nel maggio 2025, è finalmente possibile sfruttare la GenAI anche in ambienti enterprise Java, rispettando i principi fondanti di Spring e beneficiando al contempo dell’affidabilità e scalabilità tipiche della piattaforma.

Perché adottare Spring AI?

Basta aggiungere lo starter, impostare la chiave API ed è subito possibile utilizzare i vari componenti come fossero elementi standard di Spring

Scrivendo il codice tramite le interfacce Spring AI, è possibile cambiare provider (OpenAI, Vertex AI o altri) senza necessità di modificare il codice

Gli output strutturati possono essere mappati direttamente su POJO Java, rendendo l’interazione tipizzata e sicura

Con MCP e @Tool si possono creare assistenti in grado di eseguire azioni reali, arricchendo l’interazione con strumenti esterni

Use case reale: Spring potenziato con OpenAI

L’idea di fondo era trasformare una classica applicazione Spring per la gestione dei trofei vinti dai player in qualcosa di più naturale: un assistente virtuale che comprenda domande in linguaggio quotidiano.

Invece di navigare tra tab e form, un operatore può semplicemente scrivere:
"Elenca le informazioni sui player con nome Daniela",
e ricevere una risposta immediata e precisa dall'AI.

Cosa accade?

  • Spring AI riceve la richiesta e, prima di inviarla a OpenAI, la arricchisce con un set di dati, ad esempio: un prompt preconfigurato che spiega il contesto, eventuali messaggi precedenti e l’elenco delle API disponibili.

  • Grazie alla struttura del prompt e alla descrizione delle API, OpenAI capisce autonomamente che deve invocare una specifica funzione, in questo caso listPlayers.

  • Spring AI converte la richiesta ed esegue l’interrogazione tramite Spring Data JPA.

  • Viene restituita a OpenAI una PlayersResponse con la lista dei player in formato JSON.

  • OpenAI la elabora e genera il messaggio finale in linguaggio naturale, ad esempio:
    “Il player di nome Daniela nei nostri registri è: Daniela Rossi – Indirizzo: Via Roma 123 – Tel: 0612345678 – Lista dei trofei vinti: PlayerOfTheMonth, Top1%Weekly, PlayerElite.”

Tutti i passaggi vengono tracciati nei log dell’applicazione, che evidenziano come Spring AI gestisca i tool call, il contesto, gli ID di sessione e altro ancora.

Perché è un caso ideale di riferimento?

Questo esempio dimostra perfettamente la potenza di Spring AI, poiché consente un’interazione naturale e fluida con il sistema, senza la necessità di interfacce utente complesse. La logica di business Java già esistente può essere riutilizzata senza dover ricorrere a riscritture invasive, garantendo così continuità e risparmio di tempo nello sviluppo.

Inoltre, grazie all’integrazione delle funzionalità RAG basate su embeddings, è possibile eseguire query semantiche anche su dataset di dimensioni contenute, migliorando l’efficacia delle risposte AI. Il sistema si distingue anche per la sua flessibilità: è possibile passare da un provider come OpenAI ad altri, ad esempio Azure AI, senza dover modificare il codice sottostante.

Infine, grazie all’utilizzo di un vector store precaricato e a un’architettura snella, l’avvio dell’applicazione è rapido e i costi operativi risultano contenuti