Release Notes / Version 12.2406.3
Table Of ContentsThe Spring dependencies were upgraded to the Spring Boot 4 / Spring 7 baseline. With these upgrades, some further dependencies had to be upgraded as well.
Upgrade Information
The following Spring dependencies were upgraded:
Spring Boot → 4.0.0
Spring Framework → 7.0.1
Spring Security → 7.0.0
Spring Data BOM → 2025.1.0
Spring GraphQL → 2.0.0
Spring Webflow → 4.0.0-RC1
⚠️ TBD: Wait the final release 4.0.0 (planned for December 9th) or go with 4.0.0-RC1.Micrometer → 1.16.0
Reactor Project BOM → 2025.0.0
Numerous third-party dependencies have also been updated, some of the more noteworthy of which are the following:
GraphQL Java → 25.0
Hibernate ORM → 7.1.10.Final
Hibernate Validator → 9.1.0.Final
Jakarta Servlet API → 6.1.0
Tomcat → 11.0.14
JUnit Jupiter → 6.0.1
Most notable changes
Spring Boot 4.0 has a new modular design and now ships smaller focused modules rather than several large JARs. With this, many Spring Boot dependencies and Java packages have changed and respective references must be applied.
Take extra care of Spring Boot’s auto configurations. Many of them
have now vanished from the classpaths, because they were moved to
module JARs that are not configured as project (compile) dependencies.
Some of them weren’t actually used, and they don’t pollute the
classpaths anymore. Others may be required for your application’s
functionality but now could have vanished. The new module JARs
containing these auto configurations may have to be added as
additional runtime or test dependencies now. To identify potentially
missing auto configurations, you may start your Spring Boot
applications or tests before and after upgrade with
-Ddebug=true and compare the
CONDITIONS EVALUATION REPORT in the logs.
Some unwanted auto configurations from the former Spring Boot JARs had to be excluded explicitly. Now their respective module dependencies have been removed so that those exclusions are not needed anymore:
The
MongoAutoConfigurationhad to be excluded when it was in the combinedspring-boot-autoconfiguredependency. Now it resides inspring-boot-mongodbthat is not added to the applications anymore.The
FreeMarkerAutoConfigurationhad to be excluded when it was in the combinedspring-boot-autoconfiguredependency. Now it resides inspring-boot-freemarkerthat is not added to the applications anymore.The
DataSourceAutoConfigurationhad to be excluded when it was in the combinedspring-boot-autoconfiguredependency. Now it resides inspring-boot-jdbc. That dependency is still needed in the Studio Server and User Changes applications (along with the exclusion of theDataSourceAutoConfiguration). Bur it has been removed all other applications.
The former ServletWebServerFactoryAutoConfiguration
and
EmbeddedWebServerFactoryCustomizerAutoConfiguration
contained configurations for various supported web servers. The
configurations for each web server have now been moved to a focused
module JAR. In case of Tomcat, the auto configuration class is now
named TomcatServletWebServerAutoConfiguration and
resides in the spring-boot-tomcat module JAR.
Spring Boot now uses Jackson 3 as its preferred JSON library. But for
projects that cannot easily migrate, Jackson 2 is still supported
(until excluding Spring Boot 4.2). Jackson 3 uses new group IDs and
package names with com.fasterxml.jackson becoming
tools.jackson. Although the coordinates of both
Jackson versions are disjunct, it turned out that Spring’s Jackson 2
and 3 integrations produce various conflicts when the dependencies of
both versions are on the classpath of the CoreMedia applications. As
migrating the Jackson integrations of the CoreMedia CMS is a rather
complex and time-consuming task, Jackson 3 dependencies have been
avoided for now.
The migration to Jackson 3 is planned for the AEPs that will be released in spring or autumn 2026. If possible, upcoming AMPs may support both Jackson versions on the classpaths, but this requires further investigation.
Mocks or test clients may not be working like before. Test classes may require additional annotations now:
@AutoConfigureMockMvc@AutoConfigureWebTestClient@ExtendWith(MockitoExtension.class)
In some cases, when@Mockand@MockitoBeanare both used in the same test class, the@Mockannotation may have to be replaced with the staticMockito#mock(Class<T>)invocation.
Public API changes
Spring Boot’s new modular design required changes to the com.coremedia.cms.delivery.configuration.DeliveryPropertiesAutoConfiguration:
The class annotations changed from
{{@AutoConfiguration(after= {ServletWebServerFactoryAutoConfiguration.class,WebMvcAutoConfiguration.class})}}
@EnableConfigurationProperties(DeliveryConfigurationProperties.class)to@AutoConfiguration(after=WebMvcAutoConfiguration.class){{@EnableConfigurationProperties({DeliveryConfigurationProperties.class,ServerProperties.class,WebMvcProperties.class}
)}}.
The bean method changed from
deliveryBaseURI(DeliveryConfigurationProperties, ObjectProvider<ServerProperties>, ObjectProvider<WebMvcProperties>)
to
deliveryBaseURI(DeliveryConfigurationProperties, ServerProperties, WebMvcProperties).
(CMS-29017)


