Spring Boot auto-configuration for chat memory functionality in Spring AI applications
Choose the right ChatMemoryRepository implementation for your use case.
| Repository | Best For | Pros | Cons |
|---|---|---|---|
| In-Memory | Development, Testing | Fast, Simple, No setup | Data loss on restart |
| JDBC | Traditional apps, Existing DB | Mature, Transactional, Familiar | Requires schema setup |
| MongoDB | Document-centric, Flexible schema | TTL support, Flexible, Scalable | NoSQL learning curve |
| Cassandra | High write throughput, Distributed | Highly scalable, Fast writes | Complex setup |
| Neo4j | Graph relationships, Complex queries | Rich relationships, Graph queries | Specialized use case |
| Cosmos DB | Azure cloud, Global distribution | Multi-region, SLA guarantees | Azure-specific, Cost |
Use When:
Configuration:
// Auto-configured by default - no setup neededLimitations:
Use When:
Setup:
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-autoconfigure-model-chat-memory-repository-jdbc</artifactId>
<version>1.1.2</version>
</dependency>Configuration:
spring.ai.chat.memory.repository.jdbc.initialize-schema=always
spring.ai.chat.memory.repository.jdbc.platform=postgresqlSupported Databases:
Use When:
Setup:
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-autoconfigure-model-chat-memory-repository-mongodb</artifactId>
<version>1.1.2</version>
</dependency>Configuration:
spring.ai.chat.memory.repository.mongo.create-indices=true
spring.ai.chat.memory.repository.mongo.ttl=PT24HFeatures:
Use When:
Setup:
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-autoconfigure-model-chat-memory-repository-cassandra</artifactId>
<version>1.1.2</version>
</dependency>Configuration:
spring.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=P30DFeatures:
Use When:
Setup:
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-autoconfigure-model-chat-memory-repository-neo4j</artifactId>
<version>1.1.2</version>
</dependency>Configuration:
spring.ai.chat.memory.repository.neo4j.session-label=ChatSession
spring.ai.chat.memory.repository.neo4j.message-label=ChatMessageFeatures:
Use When:
Setup:
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-autoconfigure-model-chat-memory-repository-cosmos-db</artifactId>
<version>1.1.2</version>
</dependency>Configuration:
spring.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_dbFeatures:
Start
↓
Production? → No → In-Memory
↓ Yes
↓
Using Azure? → Yes → Cosmos DB
↓ No
↓
Need graph queries? → Yes → Neo4j
↓ No
↓
Need high write throughput? → Yes → Cassandra
↓ No
↓
Using MongoDB? → Yes → MongoDB
↓ No
↓
Use JDBC (default for relational DBs)Repositories use the same ChatMemoryRepository interface, so switching requires:
| Repository | Read Latency | Write Latency | Scalability | Setup Complexity |
|---|---|---|---|---|
| In-Memory | Fastest | Fastest | Limited | Minimal |
| JDBC | Fast | Fast | Vertical | Low |
| MongoDB | Fast | Fast | Horizontal | Medium |
| Cassandra | Fast | Very Fast | Horizontal | High |
| Neo4j | Medium | Medium | Vertical | Medium |
| Cosmos DB | Medium | Medium | Horizontal | Medium |
Recommended: JDBC with PostgreSQL
Recommended: MongoDB or JDBC
Recommended: Cassandra or Cosmos DB
Recommended: MongoDB or Cassandra
Recommended: Neo4j
tessl i tessl/maven-org-springframework-ai--spring-ai-autoconfigure-model-chat-memory@1.1.0