LLM Portability in Spring Boot - Build AI-Ready Java Applications with Ease
Many developers experiment with ChatGPT APIs in personal projects - but integrating AI into enterprise Java applications is an entirely different challenge. Security, scalability, and maintainability matter. You can’t hardcode API calls or manage tokens manually in a banking or real estate CRM stack.
That’s exactly why Spring Boot AI exists - a Spring-native way to embed Large Language Models (LLMs) like OpenAI GPT, Azure OpenAI, or Google Gemini into production-grade applications.
Why LLM Portability Matters
Enterprise teams often start with one AI vendor and later switch for cost, compliance, or regional performance reasons. Hardcoding API logic for each provider means painful refactors every time you change vendors. Spring Boot AI standardizes this integration layer - letting your business logic stay intact while swapping underlying AI providers through configuration.
What Is Spring Boot AI?
Spring Boot AI acts as a vendor-agnostic abstraction that connects your app to multiple LLM providers with a consistent programming model. It offers a unified ChatClient interface, pre-built starters for OpenAI, Azure, and Gemini, first-class support for PromptTemplate, and simple property-based configuration.
Example 1: Customer Support Auto-Responder (OpenAI)
A common enterprise scenario - automatically generating personalized replies to support tickets.
Dependency:
1<!-- https://mvnrepository.com/artifact/org.springframework.ai/spring-ai-openai-spring-boot-starter --> 2<dependency> 3 <groupId>org.springframework.ai</groupId> 4 <artifactId>spring-ai-openai-spring-boot-starter</artifactId> 5 <version>1.0.0-M6</version> 6</dependency>
Configure Azure OpenAI in application.properties
1# ============================= 2# OpenAI Configuration 3# ============================= 4spring.ai.openai.api-key=your_openai_api_key 5spring.ai.openai.chat.options.model=gpt-4o-mini
Service Code Example:
1@Service 2public class AutoResponderService { 3 private final ChatClient chatClient; 4 public AutoResponderService(ChatClient chatClient) { this.chatClient = chatClient; } 5 public String generateReply(String customerName, String issue) { 6 String prompt = """ 7 You are a customer support representative. 8 Customer: %s 9 Issue: %s 10 Write a short, empathetic, and professional email response. 11 """.formatted(customerName, issue); 12 return chatClient.call(prompt); 13 } 14}
Example 2: Fraud Pattern Analyzer (Azure OpenAI)
Switching to Azure OpenAI requires no code changes in your service - only dependencies and configuration updates. Dependency:
1<!-- https://mvnrepository.com/artifact/org.springframework.ai/spring-ai-azure-openai-spring-boot-starter --> 2<dependency> 3 <groupId>org.springframework.ai</groupId> 4 <artifactId>spring-ai-azure-openai-spring-boot-starter</artifactId> 5 <version>1.0.0-M6</version> 6</dependency>
Configure Azure OpenAI in application.properties
1# ============================= 2# Azure OpenAI Configuration 3# ============================= 4spring.ai.azure.openai.api-key=your_azure_openai_api_key 5spring.ai.azure.openai.endpoint=https://your-resource-name.openai.azure.com/ 6spring.ai.azure.openai.chat.options.deployment-name=gpt-4-deployment
Service Code Example:
1@Service 2public class FraudAnalysisService { 3 private final ChatClient chatClient; 4 public FraudAnalysisService(ChatClient chatClient) { this.chatClient = chatClient; } 5 public String analyze(String transactionDetails) { 6 var template = """ 7 You are a financial fraud analyst. 8 Review the transaction below and respond with a JSON object containing risk\_level and reason. 9 Transaction: {details} 10 """; 11 var prompt = new org.springframework.ai.prompt.PromptTemplate(template) 12 .add("details", transactionDetails) 13 .create(); 14 return chatClient.call(prompt); 15 } 16}
Example 3: Contract Summarization (Google Gemini)
Use Google Gemini for summarizing internal contracts or legal documents. Dependency:
1<!-- https://mvnrepository.com/artifact/org.springframework.ai/spring-ai-starter-model-google-genai --> 2<dependency> 3 <groupId>org.springframework.ai</groupId> 4 <artifactId>spring-ai-starter-model-google-genai</artifactId> 5 <version>1.1.0-M4</version> 6</dependency>
Configure Google Gemini in application.properties
1# ============================= 2# Google Gemini Configuration 3# ============================= 4spring.ai.google.genai.api-key=your_gemini_api_key 5spring.ai.google.genai.chat.options.model=gemini-2.5-pro
Service Code Example:
1@Service 2public class ContractSummarizationService { 3 private final ChatClient chatClient; 4 public ContractSummarizationService(ChatClient chatClient) { this.chatClient = chatClient; } 5 public String summarize(String contractText) { 6 var systemMsg = new org.springframework.ai.chat.prompt.SystemMessage( 7 "You are a legal assistant focused on summarizing key commercial and payment terms." 8 ); 9 var userMsg = new org.springframework.ai.chat.prompt.UserMessage( 10 "Summarize this contract into 3 main points: " + contractText 11 ); 12 var prompt = new org.springframework.ai.chat.prompt.Prompt(List.of(systemMsg, userMsg)); 13 return chatClient.call(prompt).getContent(); 14 } 15}
Why Portability Wins
With ChatClient abstraction, your AI logic is future-proof.
| Layer | Remains Same | Changes |
|---|---|---|
| Service Logic | Yes | No |
| Prompt Structure | Yes | No |
| Dependencies | No | Yes |
| Properties | No | Yes |
That’s true LLM portability - switch providers in hours, not weeks.
Final Thoughts
Spring Boot AI brings LLM portability to enterprise Java. It bridges AI capabilities with Spring’s simplicity, making it possible to connect to OpenAI, Azure, or Gemini without changing your codebase. If your enterprise applications are ready for intelligent automation, Spring Boot AI is the most future-proof way to integrate it.





