Skip to content

Remove @Deprecated(forRemoval=true) APIs accumulated during 2.0.0 development #6347

Description

@kuntal1461

Overview

During the 2.0.0-M32.0.0 development cycle a number of APIs were marked @Deprecated(forRemoval = true) with clear replacements already in place. None of these have a dedicated removal issue filed against them. This is a tracking issue to remove them — ideally in 2.1.x or whichever release follows 2.0.0 GA.

No business logic changes are needed; every item below has a direct replacement already in the codebase.


Items to remove

1. JsonParser (entire class)

  • File: spring-ai-model/src/main/java/org/springframework/ai/util/json/JsonParser.java
  • Introduced by: PR Refactor JSON utilities #6135"Refactor JSON utilities"
  • Replace with: JsonHelper / JacksonUtils

2. TokenTextSplitter — 5 deprecated constructors

  • File: spring-ai-commons/src/main/java/org/springframework/ai/transformer/splitter/TokenTextSplitter.java
  • Deprecated since: 2.0.0-M3
  • Replace with: TokenTextSplitter.builder() fluent API
// Before (deprecated)
new TokenTextSplitter()
new TokenTextSplitter(boolean keepSeparator)
new TokenTextSplitter(EncodingType encodingType)
new TokenTextSplitter(EncodingType, boolean)
new TokenTextSplitter(int, int, int, int, boolean)

// After
TokenTextSplitter.builder().withChunkSize(500).build()

3. MCP SSE transports — 3 entire classes deprecated since 2.0.0

Deprecated by commit "Deprecate SSE transports, set Streamable HTTP as default server protocol" (May 2026). Streamable HTTP is now the default.

Deprecated class Replacement
WebFluxSseServerTransportProvider WebFluxStreamableServerTransportProvider
WebMvcSseServerTransportProvider WebMvcStreamableServerTransportProvider
WebFluxSseClientTransport WebFluxStreamableClientTransportProvider

4. SyncMcpToolCallbackProvider / AsyncMcpToolCallbackProvider — 4 constructors each

  • Files: mcp/common/src/main/java/org/springframework/ai/mcp/Sync|AsyncMcpToolCallbackProvider.java
  • Replace with: .builder() — Javadoc on each deprecated constructor says "use #builder() instead"

5. SyncMcpToolCallback / AsyncMcpToolCallback — deprecated methods

  • Files: mcp/common/src/main/java/org/springframework/ai/mcp/Sync|AsyncMcpToolCallback.java
  • Replace with: respective builder methods

6. getDefaultOptions() across all model implementations

  • Renamed to getOptions() in the ChatModel interface.
  • All model impls (OpenAiChatModel, OllamaChatModel, AnthropicChatModel, MistralAiChatModel, BedrockConverseChatModel, etc.) still carry the deprecated bridge override.
  • Replace with: getOptions()

7. SyncMcpLogginProvider (typo class — entire class @Deprecated)

  • File: mcp/mcp-annotations/.../provider/logging/SyncMcpLogginProvider.java
  • This is the typo'd variant (Loggin instead of Logging). The correct class SyncMcpLoggingProvider already exists alongside it.
  • Safe to delete — no external references.

8. Various model-specific deprecated methods

File Method Replacement
OpenAiChatModel.java:170 getDefaultOptions() getOptions()
OpenAiAudioSpeechModel.java:186 deprecated method current equivalent
ElevenLabsTextToSpeechModel.java:193 deprecated method current equivalent
TextToSpeechModel.java:55 deprecated method current equivalent
DeepSeekAssistantMessage.java:46,51 deprecated since 2.0.0 current constructors
AnthropicChatModel.java:1634 inner builder deprecated since 2.0.0 .builder()

What is NOT in scope here

  • MistralAiApi model field with comment "Retirement planned 31st July 2026" — that has an external dependency on Mistral's retirement schedule.
  • Any @Deprecated without forRemoval = true — those are lower priority.

Suggested milestone

2.1.x — after 2.0.0 GA establishes the stable baseline and gives the ecosystem time to migrate.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions