Spring Boot auto-configuration for chat memory functionality in Spring AI applications
Spring Boot auto-configuration module that automatically configures chat memory functionality for managing conversational context in Spring AI applications. Provides zero-configuration setup for storing and retrieving conversation history with sensible defaults.
| Component | Purpose | Default Implementation |
|---|---|---|
ChatMemory | Store and retrieve conversation messages | MessageWindowChatMemory (20 messages) |
ChatMemoryRepository | Persist messages | InMemoryChatMemoryRepository |
| Message Types | User, Assistant, System, Tool | All extend AbstractMessage |
Maven:
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-autoconfigure-model-chat-memory</artifactId>
<version>1.1.2</version>
</dependency>Gradle:
implementation 'org.springframework.ai:spring-ai-autoconfigure-model-chat-memory:1.1.2'When on the classpath, Spring Boot automatically creates:
ChatMemoryRepository bean (default: in-memory)ChatMemory bean (default: 20-message sliding window)public interface ChatMemory {
void add(String conversationId, Message message);
void add(String conversationId, List<Message> messages);
List<Message> get(String conversationId);
void clear(String conversationId);
}Key Behaviors:
| Type | Class | Purpose |
|---|---|---|
| User | UserMessage | Input from users/developers |
| Assistant | AssistantMessage | AI-generated responses |
| System | SystemMessage | High-level instructions (preserved) |
| Tool | ToolResponseMessage | Function/tool execution results |
| Type | Module | Use Case |
|---|---|---|
| In-Memory | Built-in | Development/testing |
| JDBC | spring-ai-autoconfigure-model-chat-memory-repository-jdbc | Relational databases |
| MongoDB | spring-ai-autoconfigure-model-chat-memory-repository-mongodb | Document storage |
| Cassandra | spring-ai-autoconfigure-model-chat-memory-repository-cassandra | Distributed systems |
| Neo4j | spring-ai-autoconfigure-model-chat-memory-repository-neo4j | Graph relationships |
| Cosmos DB | spring-ai-autoconfigure-model-chat-memory-repository-cosmos-db | Azure cloud |
@Service
public class ConversationService {
@Autowired
private ChatMemory chatMemory;
public void addMessage(String conversationId, String content, boolean isUser) {
Message message = isUser ?
new UserMessage(content) :
new AssistantMessage(content);
chatMemory.add(conversationId, message);
}
public List<Message> getHistory(String conversationId) {
return chatMemory.get(conversationId);
}
}@Configuration
public class ChatMemoryConfig {
@Bean
public ChatMemoryRepository chatMemoryRepository(DataSource dataSource) {
return JdbcChatMemoryRepository.builder()
.dataSource(dataSource)
.build();
}
}@Configuration
public class ChatMemoryConfig {
@Bean
public ChatMemory chatMemory(ChatMemoryRepository repository) {
return MessageWindowChatMemory.builder()
.chatMemoryRepository(repository)
.maxMessages(100)
.build();
}
}spring.ai.chat.memory.repository.jdbc.initialize-schema=always
spring.ai.chat.memory.repository.jdbc.platform=postgresqlspring.ai.chat.memory.repository.mongo.create-indices=true
spring.ai.chat.memory.repository.mongo.ttl=PT24Hspring.ai.chat.memory.repository.cassandra.keyspace=my_keyspace
spring.ai.chat.memory.repository.cassandra.table=chat_memory
spring.ai.chat.memory.repository.cassandra.time-to-live=P30Dspring.ai.chat.memory.repository.neo4j.session-label=ChatSession
spring.ai.chat.memory.repository.neo4j.message-label=ChatMessagespring.ai.chat.memory.repository.cosmosdb.endpoint=https://myaccount.documents.azure.com:443/
spring.ai.chat.memory.repository.cosmosdb.key=your-account-key
spring.ai.chat.memory.repository.cosmosdb.database-name=chat_memory_dbimport org.springframework.ai.chat.memory.ChatMemory;
import org.springframework.ai.chat.memory.ChatMemoryRepository;
import org.springframework.ai.chat.memory.InMemoryChatMemoryRepository;
import org.springframework.ai.chat.memory.MessageWindowChatMemory;
import org.springframework.ai.chat.messages.Message;
import org.springframework.ai.chat.messages.UserMessage;
import org.springframework.ai.chat.messages.AssistantMessage;
import org.springframework.ai.chat.messages.SystemMessage;
import org.springframework.ai.chat.messages.ToolResponseMessage;⚠️ Production Warning: InMemoryChatMemoryRepository loses data on restart. Use persistent repositories for production.
⚠️ Thread Safety: All repository implementations must be thread-safe for concurrent access.
⚠️ Validation: All methods validate inputs and throw IllegalArgumentException for null/empty values.
⚠️ System Messages: MessageWindowChatMemory replaces old system messages when new ones are added.
tessl i tessl/maven-org-springframework-ai--spring-ai-autoconfigure-model-chat-memory@1.1.0