Skip to content

Conversation

@bsbodden
Copy link
Collaborator

Upgrade to Spring Boot 3.5.8

This PR upgrades Redis OM Spring to Spring Boot 3.5.8, Spring Data Redis 3.5.6, and Jedis 6.0.0, and addresses all deprecation warnings in preparation for Spring Boot 4.0.

🔄 Dependency Updates

Dependency Previous Version New Version
Spring Boot 3.4.12 3.5.8
Spring Data Redis 3.4.12 3.5.6
Jedis 5.2.0 6.0.0
Redis OM Spring 1.0.5 1.1.0

🔧 Breaking Changes

Jedis 6.0.0 Query Escaping

Jedis 6.0.0 changed how it handles search query quoting for RediSearch. Multi-word search terms now require double quotes (") instead of single quotes (').

Before (Jedis 5.2.0):
SearchResult result = ops.search(new Query("@title:'hello world'"));

After (Jedis 6.0.0):
SearchResult result = ops.search(new Query("@title:"hello world""));

Who is affected:

  • Users implementing custom repository methods that construct Query objects with Jedis
  • Users directly using SearchOperations with string-based queries containing spaces

Who is NOT affected:

  • Users only using Redis OM Spring's built-in repository query methods
  • Users using Entity Streams API
  • Users using @query annotations (handled internally)

🛠️ Technical Improvements

Deprecated API Migration

Replaced deprecated QueryMethodEvaluationContextProvider with the new ValueExpressionDelegate API introduced in Spring Data 3.4:

  • ✅ Updated RedisDocumentRepositoryFactory
  • ✅ Updated RedisEnhancedRepositoryFactory
  • ✅ Updated RediSearchQuery constructor
  • ✅ Updated RedisEnhancedQuery constructor
  • ✅ All 43 deprecation warnings eliminated

This migration prepares the codebase for Spring Boot 4.0 compatibility where the deprecated API will be removed.

📚 Documentation

  • Added comprehensive migration guide at docs/content/modules/ROOT/pages/migration-guide.adoc
  • Updated version requirements page with Spring Boot 3.5.8 details
  • Added migration guide to documentation navigation
  • Included before/after code examples for Jedis query updates
  • Documented affected user groups and migration steps

✅ Testing

  • Full test suite passes: BUILD SUCCESSFUL
  • All 600+ tests passing
  • No regressions detected
  • Jedis 6.0.0 query escaping verified with updated test

🎯 Spring Boot 3.5.x Highlights

  • Spring Data BOM 2025.0.0 (Spring Data Redis 3.5.6)
  • Docker/Testcontainers fix for Docker 29.0.0+ compatibility
  • Java 25 support
  • Various bug fixes for SSL metrics, Undertow, and class loading
  • No breaking API changes affecting Redis OM Spring core functionality

📋 Migration Steps for Users

  1. Update Redis OM Spring to version 1.1.0
  2. If you have custom repository implementations using Jedis Query objects:
    - Review all custom query strings
    - Replace single quotes with double quotes around multi-word search terms
    - Test your custom queries thoroughly

See the docs/content/modules/ROOT/pages/migration-guide.adoc for detailed instructions and examples.

upgraded Redis OM Spring to Spring Boot 3.5.8. All tests pass successfully!

  Changes Made:

  1. Spring Boot: 3.4.12 → 3.5.8
  2. Spring Data Redis: 3.4.12 → 3.5.6
  3. Jedis: 5.2.0 → 6.0.0
  4. Test Fix: Updated MyHashQueriesImpl.java to use double quotes instead of single quotes for multi-word search queries (Jedis 6.0.0 query escaping change)

  Key Release Notes Summary:

  Spring Boot 3.5.x includes significant improvements:
  - Spring Data BOM 2025.0.0 (Spring Data Redis 3.5.6)
  - Jedis 6.0.0 (managed by Spring Boot)
  - Docker/Testcontainers fix for Docker 29.0.0 compatibility (3.5.8)
  - Java 25 support
  - Various bug fixes for SSL metrics, Undertow, and class loading
  - No breaking API changes affecting Redis OM Spring

  Breaking Change Addressed:
  - Jedis 6.0.0 changed how it handles search query quoting. Multi-word terms in RediSearch queries now require double quotes (") instead of single quotes (') for proper escaping.
- Add comprehensive migration guide documenting Jedis 6.0.0 query escaping changes
- Update version requirements page with Spring Boot 3.5.8 and Jedis 6.0.0
- Add migration guide to documentation navigation
- Include before/after code examples for query string updates
- Document who is affected by the Jedis breaking change

The Jedis 6.0.0 upgrade changes how multi-word search terms are quoted in
RediSearch queries. Users with custom repository implementations need to
update from single quotes to double quotes.
…h ValueExpressionDelegate

Migrate from deprecated Spring Data QueryMethodEvaluationContextProvider to the new
ValueExpressionDelegate API introduced in Spring Data 3.4.

Changes:
- Update RedisDocumentRepositoryFactory to use ValueExpressionDelegate
- Update RedisEnhancedRepositoryFactory to use ValueExpressionDelegate
- Update RediSearchQuery constructor signature
- Update RedisEnhancedQuery constructor signature
- Update all javadoc to reflect the new parameter

This change eliminates all deprecation warnings when building with Spring Boot 3.5.x
and prepares the codebase for Spring Boot 4.0 compatibility where the deprecated
API will be removed.
@bsbodden bsbodden self-assigned this Nov 22, 2025
@bsbodden bsbodden requested a review from Copilot November 22, 2025 20:36
@bsbodden bsbodden merged commit 3c96ba0 into redis:main Nov 22, 2025
10 checks passed
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR upgrades Redis OM Spring from version 1.0.5 to 1.1.0, bringing support for Spring Boot 3.5.8, Spring Data Redis 3.5.6, and Jedis 6.0.0. The upgrade addresses all deprecation warnings by migrating from the deprecated QueryMethodEvaluationContextProvider API to the new ValueExpressionDelegate API introduced in Spring Data 3.4, ensuring compatibility with the upcoming Spring Boot 4.0 release. The PR also handles a breaking change in Jedis 6.0.0 regarding query string escaping for RediSearch queries.

Key Changes:

  • Dependency upgrades: Spring Boot 3.4.12 → 3.5.8, Spring Data Redis 3.4.12 → 3.5.6, Jedis 5.2.0 → 6.0.0
  • API migration from deprecated QueryMethodEvaluationContextProvider to ValueExpressionDelegate across repository factory and query classes
  • Updated query escaping in test fixtures to use double quotes instead of single quotes for Jedis 6.0.0 compatibility
  • Comprehensive migration guide and updated version requirements documentation

Reviewed changes

Copilot reviewed 9 out of 9 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
gradle.properties Updated version numbers for Redis OM Spring (1.0.5 → 1.1.0), Spring Boot (3.4.12 → 3.5.8), Spring Data Redis (3.4.12 → 3.5.6), and Jedis (5.2.0 → 6.0.0)
redis-om-spring/src/main/java/com/redis/om/spring/repository/support/RedisEnhancedRepositoryFactory.java Migrated from deprecated QueryMethodEvaluationContextProvider to ValueExpressionDelegate in factory and lookup strategy classes
redis-om-spring/src/main/java/com/redis/om/spring/repository/support/RedisDocumentRepositoryFactory.java Replaced deprecated QueryMethodEvaluationContextProvider with ValueExpressionDelegate in repository factory and query lookup strategy
redis-om-spring/src/main/java/com/redis/om/spring/repository/query/RedisEnhancedQuery.java Updated constructor parameter and JavaDoc to use ValueExpressionDelegate instead of deprecated QueryMethodEvaluationContextProvider
redis-om-spring/src/main/java/com/redis/om/spring/repository/query/RediSearchQuery.java Updated constructor signature and documentation to use ValueExpressionDelegate for SpEL expression evaluation
tests/src/test/java/com/redis/om/spring/fixtures/hash/repository/MyHashQueriesImpl.java Changed query string escaping from single quotes to double quotes to comply with Jedis 6.0.0 breaking change
docs/content/modules/ROOT/pages/version-requirements.adoc Updated version requirements table and examples to reflect Spring Boot 3.5.8, Spring Data Redis 3.5.6, and Jedis 6.0.0, with reference to migration guide
docs/content/modules/ROOT/pages/migration-guide.adoc New comprehensive migration guide documenting the Jedis 6.0.0 breaking change in query escaping with before/after examples and affected user groups
docs/content/modules/ROOT/nav.adoc Added migration guide to the documentation navigation menu

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.


=== Dependency Changes

[cols="1,1,1"]
Copy link

Copilot AI Nov 22, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The AsciiDoc table definition is missing the options="header" attribute, which is needed to properly format the first row as a header. This is inconsistent with other tables in the documentation (e.g., version-requirements.adoc line 13).

Change from:

[cols="1,1,1"]

to:

[cols="1,1,1", options="header"]

This will ensure the "Dependency | Previous Version | New Version" row is formatted as a table header.

Suggested change
[cols="1,1,1"]
[cols="1,1,1", options="header"]

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant