close

Filter

loading table of contents...

Release Notes / Version 12.2406.3

Table Of Contents

Upgraded to Spring Boot 4 / Spring 7 baseline

The 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:

Numerous third-party dependencies have also been updated, some of the more noteworthy of which are the following:

Most notable changes

Module Dependencies

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 MongoAutoConfiguration had to be excluded when it was in the combined spring-boot-autoconfigure dependency. Now it resides in spring-boot-mongodb that is not added to the applications anymore.

  • The FreeMarkerAutoConfiguration had to be excluded when it was in the combined spring-boot-autoconfigure dependency. Now it resides in spring-boot-freemarker that is not added to the applications anymore.

  • The DataSourceAutoConfiguration had to be excluded when it was in the combined spring-boot-autoconfigure dependency. Now it resides in spring-boot-jdbc. That dependency is still needed in the Studio Server and User Changes applications (along with the exclusion of the DataSourceAutoConfiguration). 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.

Upgrading Jackson

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.

Upgrading Testing Features

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 @Mock and @MockitoBean are both used in the same test class, the @Mock annotation may have to be replaced with the static Mockito#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)

Search Results

Table Of Contents
warning

Your Internet Explorer is no longer supported.

Please use Mozilla Firefox, Google Chrome, or Microsoft Edge.