Skip to main content
Version: 4.6

Version History and How to Choose

Picking a version in one sentenceโ€‹

Use the latest 4.6.0 for new projects. Projects already on 4.5.0 should upgrade to 4.6.0 as soon as possible (see "Before you upgrade" below for the reasons).

Version supportโ€‹

VersionJDKSpring BootStarter artifactGraalVM
3.5.28+1.5.x / 2.x.x / 3.x.x-spring-boot-starternot supported
4.1.38+1.5.x / 2.x.x / 3.x.x-spring-boot-starternot supported
4.2.0 ~ 4.3.18+1.5.x / 2.x.x / 3.x.x-spring-boot-starter, -boot3-startersupported
4.5.08+ (17+ for Boot 3 / 4)1.5.x / 2.x.x / 3.x.x / 4.x.xthe three above plus -boot4-startersupported
4.6.0 (latest)8+ (17+ for Boot 3 / 4)1.5.x / 2.x.x / 3.x.x / 4.x.xsame as abovesupported
There is no 4.4.x

After 4.3.1 (2024-06) the project jumped straight to 4.5.0 (2026-01) โ€” 19 months later. No 4.4.x release exists at all; ignore any mention of 4.4 elsewhere.

The maintenance status of each line (which still receives features, which is frozen) is in the main repository's SUPPORT.md.

Before you upgradeโ€‹

4.5.0 โ†’ 4.6.0โ€‹

Two items are mandatory reading; the rest is optional.

DsSpelExpressionProcessor had a SpEL injection vulnerability that could lead to remote code execution when the expression is controllable (#767).

There are two ways to fix it: upgrade to 4.6.0, or stay on 4.5.0 but never let a @DS SpEL expression contain user-controllable content.

4.6.0 also adds the spring.datasource.dynamic.aop.allowed-spel-type-access switch (default false) to forbid type references such as T(java.lang.Runtime). See the full configuration reference.

2. JDK 8 users seeing No suitable driver?โ€‹

The root cause is a dependency leak in 4.5.0, not your MySQL configuration.

4.5.0 leaked oracle-spring-boot-starter-ucp, ucp (and ojdbc11) to every consumer. ojdbc11 is Java 11 bytecode, and on JDK 8 it breaks the driver ServiceLoader iteration inside DriverManager โ€” other drivers (MySQL and friends) therefore fail to register, and you end up with No suitable driver.

4.6.0 changed both dependencies to compileOnly. If you must stay on 4.5.0 with JDK 8, exclude them:

<exclusions>
<exclusion>
<groupId>com.oracle.database.spring</groupId>
<artifactId>oracle-spring-boot-starter-ucp</artifactId>
</exclusion>
<exclusion>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ucp</artifactId>
</exclusion>
</exclusions>

Other behaviour changesโ€‹

ChangeImpact
the Seata proxy checker works againin 4.5.0 that checker was never registered, so it did not exist at all. After the fix in 4.6.0, users with seata=true who hit Seata's automatic proxying start seeing WARN messages โ€” this is expected
the Boot 4 line aligns with mybatis-spring 4.xremoves the transitive 2.1.2 version conflict
Automatic-Module-Name added to every artifactprovides a stable JPMS module name contract; a full module-info is still not shipped

Change logโ€‹

Every version links to its GitHub Release with the full PR list and contributors.

4.6.0 2026-10-13โ€‹

An aggregate release, 8 months and 63 changes after the previous one.

Added

  • read-only Actuator endpoint /actuator/dynamic-datasource: the datasource list, group composition and global switches โ€” see operations endpoint and metrics
  • contract tests for @DSTransactional propagation semantics (12 scenarios ร— 3 lines)
  • SUPPORT.md: the maintenance policy for the three Boot lines

Fixed

  • security: SpEL injection in DsSpelExpressionProcessor (potential RCE)
  • 7 transaction core issues: the NESTED savepoint success path, unmarked connection leaks, a broken completion chain, REQUIRES_NEW NPE with no connection (#764), Error rollback semantics, and more
  • routing: containsKey/get double-read returning null under concurrency, division by zero for an empty group after removing a datasource
  • native image: reflection registration for RandomDynamicDataSourceStrategy, nativeTest fixes (#788)
  • dependencies: the Oracle UCP dependency leak changed to compileOnly (#787)

Read the full 4.6.0 release notes โ†’

4.5.0 2026-01-20โ€‹

A feature release 19 months after 4.3.1, and the project's second watershed (the first one was 4.0.0).

Added

  • Spring Boot 4.0.0 support, with the new dynamic-datasource-spring-boot4-starter
  • C3P0 and Oracle UCP pool support (pool coverage is now Druid / HikariCP / BeeCP / DBCP2 / C3P0 / UCP / Atomikos)
  • HikariCP pool metrics (Micrometer) โ€” see operations endpoint and metrics
  • Seata proxy datasource detection (the checker itself only became effective in 4.6.0, see above)
  • Druid: thread pool parameter configuration, datasource callback configuration
  • datasource creation failures now carry the cause, so the root cause is no longer lost

Engineering

  • the build system migrated from Maven to Gradle
  • releases moved to the Maven Central Portal

Read the full 4.5.0 release notes โ†’

The tag is v4.50

The git tag for 4.5.0 is missing a dot: it is written v4.50. When looking up tags, writing comparison links or configuring CI, always use v4.50, not v4.5.0.

4.3.1 2024-06-13โ€‹

  • fixed startup warnings and Druid datasources that could not be closed (the closed state)
  • group datasources are cleaned up together when removed
  • fixed an infinite loop caused by opening a transaction inside a transaction post-callback
  • added MySQL Connector/J 5.1 XADataSource support

Read the full 4.3.1 release notes โ†’

Earlier versionsโ€‹

VersionDateHighlights
4.3.02024-01fixed Druid creation failures when a publicKey is present, @Bean initialization improvements
4.2.02023-10GraalVM nativeTest in CI, graceful shutdown (grace-destroy), multi-datasource transaction synchronization
4.1.32023-08ENC block encryption/decryption (53/64 byte thresholds), removed the hard dependency on spring-boot-starter-web
4.1.22023-07fixed multiple NESTED sub-transactions not committing under REQUIRED
4.1.12023-07fixed Druid encryption failures
4.1.02023-07annotation resolution ArrayStoreException, TransactionFactory NoClassDefFoundError
4.0.02023-06multi-datasource transaction propagation, Atomikos support, Jakarta EE 10 migration, NESTED propagation
3.6.02022-12Spring Boot 3 auto-configuration support, Druid socketTimeout / connectTimeout
3.5.22022-08local transactions throwing exceptions, #root.target, native HikariCP parameters
3.5.02021-11init level restructuring (breaking), strategy method renamed to determineKey (breaking), health check removed, class-level annotations for local transactions, DataSourceInitEvent

See all releases โ†’

Upgrade adviceโ€‹

  • New projects: go straight to the latest stable version.
  • Your current version works and has no feature you need: no need to upgrade.
  • Before upgrading: always read "Before you upgrade" above, especially for minor versions with breaking changes (x.y.0 and x.y releases).
  • This project does not guarantee binary compatibility across major versions, so run your own integration tests after upgrading.

Further readingโ€‹

  • Unavailable versions โ€” versions that were pulled or had capabilities removed
  • Out of scope โ€” what this project deliberately does not do, so you do not mistake "not implemented" for "a version problem"
  • The version dropdown in this site's navbar switches between the 4.5.0 / 4.6.0 documentation sets