Upgrade to Spring Boot 4.0.5 and Spring Framework 7.0.6#15541
Open
jamesfredley wants to merge 22 commits into8.0.xfrom
Open
Upgrade to Spring Boot 4.0.5 and Spring Framework 7.0.6#15541jamesfredley wants to merge 22 commits into8.0.xfrom
jamesfredley wants to merge 22 commits into8.0.xfrom
Conversation
# Conflicts: # dependencies.gradle # grails-data-hibernate5/grails-plugin/src/main/groovy/org/grails/plugin/hibernate/support/GrailsOpenSessionInViewInterceptor.java # grails-data-mongodb/boot-plugin/src/test/groovy/org/grails/datastore/gorm/mongodb/boot/autoconfigure/MongoDbGormAutoConfigurationSpec.groovy # grails-data-mongodb/boot-plugin/src/test/groovy/org/grails/datastore/gorm/mongodb/boot/autoconfigure/MongoDbGormAutoConfigureWithGeoSpacialSpec.groovy
The 8.0.x merge reintroduced several items that had been removed or updated for Spring Boot 4 compatibility: - Remove vendored Spring theme files (10 files) already removed by #15457 - Remove theme references from GrailsApplicationContext (ThemeSource, onRefresh, getTheme) - Remove LoaderImplementation import and CLASSIC loader convention from GrailsGradlePlugin (removed in Spring Boot 4) - Add missing SessionFactoryUtils vendored import in GrailsOpenSessionInViewInterceptor - Add spring-boot-hibernate dependency for HibernateJpaAutoConfiguration package relocation in test example Assisted-by: Claude Code <Claude@Claude.ai>
ThemeSource (org.springframework.ui.context.ThemeSource) was removed in Spring Framework 7.0. GrailsWebApplicationContext imported and implemented this interface, causing grails-web-core compilation failure and cascading all downstream CI jobs. Assisted-by: Claude Code <Claude@Claude.ai>
Sort org.springframework imports alphabetically before the grails/org.grails group to satisfy checkstyle ImportOrder rule. Assisted-by: Claude Code <Claude@Claude.ai>
- Update ApplicationClassInjectorSpec to expect relocated HibernateJpaAutoConfiguration class - Use forked SessionHolder in MultiDataSourceSessionSpec - Add missing RestoreSystemProperties import in MongoDB specs - Remove Spring Theme/ThemeSource references deleted in Spring 7 - Add spring-boot-jdbc test dependency for DataSourceAutoConfiguration Assisted-by: Claude Code <Claude@Claude.ai>
Checkstyle requires explicit imports per AvoidStarImport rule. Assisted-by: Claude Code <Claude@Claude.ai>
- Remove unused imports (ObjectProvider, UrlMappings) in UrlMappingsAutoConfiguration to fix checkstyle - Add spring-boot-hibernate test dependency to grails-data-hibernate5 boot-plugin for relocated HibernateJpaAutoConfiguration class - Update spring.data.mongodb.* to spring.mongodb.* in MongoDB boot-plugin test specs (property renamed in Spring Boot 4) - Disable integrationTest for modules using grails-spring-security (app1, app3, exploded, plugins/exploded, mongodb/test-data-service) until plugin is updated for Spring Boot 4 - Disable integrationTest for gsp-sitemesh3 (SiteMesh3 incompatible with Spring Framework 7) - Ignore JSP test in gsp-layout (JSP/theme support removed in Spring Framework 7, see #15457) - Disable groovydoc for micronaut-singleton test plugin to avoid Groovy version conflict (4.0.29 vs 4.0.30 from Micronaut platform) Assisted-by: Claude Code <Claude@Claude.ai>
Adapt AbstractGrailsMockHttpServletResponse to Spring 7 changes in MockHttpServletResponse and restore the previous reset() behavior.
# Conflicts: # grails-testing-support-core/src/main/groovy/org/grails/testing/GrailsApplicationBuilder.groovy # grails-web-boot/src/test/groovy/grails/boot/EmbeddedContainerWithGrailsSpec.groovy
Spring Boot 4.0 moved BootstrapRegistry, BootstrapRegistryInitializer, and ConfigurableBootstrapContext from org.springframework.boot to org.springframework.boot.bootstrap. Update all references and the spring.factories key to use the new package paths. Assisted-by: Claude Code <Claude@Claude.ai>
…elocations DataSourceAutoConfiguration moved from org.springframework.boot.autoconfigure.jdbc to org.springframework.boot.jdbc.autoconfigure and ReactorAutoConfiguration moved from org.springframework.boot.autoconfigure.reactor to org.springframework.boot.reactor.autoconfigure. Update both the source constant and the test expectations. Assisted-by: Claude Code <Claude@Claude.ai>
Contributor
There was a problem hiding this comment.
Pull request overview
Upgrades Grails Core to Spring Boot 4.0.5 / Spring Framework 7.0.6 and applies the required compatibility changes across core, web, testing, MongoDB, and Hibernate 5.6-jakarta integration (including vendoring removed Spring ORM Hibernate 5 support).
Changes:
- Update build/dependency coordinates, Spring Boot 4 package relocations, and related API migrations (bootstrapping, web server, MVC, MongoDB properties, etc.).
- Remove Spring theme/JSP/theme infrastructure (now removed upstream) and adjust affected tests.
- Vendor Spring ORM Hibernate 5 integration classes into
grails-data-hibernate5to preserve Hibernate 5.6-jakarta support under Spring Framework 7.
Reviewed changes
Copilot reviewed 134 out of 135 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| grails-wrapper/build.gradle | Switch JUnit Platform dependency from runner to suite. |
| grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/DefaultUrlCreatorTests.groovy | Update request character encoding call to avoid ambiguity. |
| grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/servlet/UrlMappingsErrorPageCustomizer.groovy | Update Spring Boot 4 import relocations for error-page customization. |
| grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/mvc/UrlMappingsInfoHandlerAdapter.groovy | Remove obsolete @Override for removed Spring MVC API. |
| grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/mvc/UrlMappingsHandlerMapping.groovy | Update interceptor matching to new Spring MVC API. |
| grails-web-url-mappings/src/main/groovy/grails/web/mapping/ResponseRedirector.groovy | Replace removed/deprecated status constant with FOUND (302). |
| grails-web-url-mappings/build.gradle | Add Boot modularized web-server/servlet compileOnly deps; update JUnit Platform dependency. |
| grails-web-mvc/build.gradle | Update JUnit Platform dependency to suite. |
| grails-web-databinding/build.gradle | Update JUnit Platform dependency to suite. |
| grails-web-core/src/main/groovy/grails/web/servlet/context/GrailsWebApplicationContext.java | Remove Spring theme support interface/notes. |
| grails-web-core/build.gradle | Update JUnit Platform dependency to suite. |
| grails-web-common/src/main/groovy/org/grails/web/config/http/GrailsFilters.java | Replace removed Boot SecurityProperties constant usage with internal constant. |
| grails-web-common/src/main/groovy/org/grails/web/config/http/GrailsFilterOrder.java | Introduce internal filter-order constant for Boot 4 migration. |
| grails-web-common/build.gradle | Update JUnit Platform dependency to suite. |
| grails-web-boot/src/test/groovy/grails/boot/GrailsSpringApplicationSpec.groovy | Ignore embedded server spec pending Boot 4 modularization rework. |
| grails-web-boot/src/test/groovy/grails/boot/EmbeddedContainerWithGrailsSpec.groovy | Ignore embedded container spec pending Boot 4 modularization rework. |
| grails-web-boot/build.gradle | Update JUnit Platform dependency to suite. |
| grails-validation/build.gradle | Update JUnit Platform dependency to suite. |
| grails-url-mappings/src/main/groovy/org/grails/plugins/web/mapping/UrlMappingsAutoConfiguration.java | Simplify error page customizer bean definition for Boot 4 changes. |
| grails-url-mappings/build.gradle | Add Boot servlet API dependency; update JUnit Platform dependency. |
| grails-testing-support-mongodb/build.gradle | Update Testcontainers MongoDB dependency coordinate. |
| grails-testing-support-datamapping/build.gradle | Update JUnit Platform exclusion to suite. |
| grails-testing-support-core/src/main/groovy/org/grails/testing/GrailsApplicationBuilder.groovy | Replace removed Boot servlet app context class; manual annotation processor registration. |
| grails-testing-support-core/build.gradle | Add spring-webmvc; update JUnit Platform dependency to suite. |
| grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/RenderMethodTests.groovy | Modernize/rename Spock tests; improve assertions/messages. |
| grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/mvc/RedirectMethodTests.groovy | Update assertion text/status constant to FOUND (302). |
| grails-test-suite-persistence/build.gradle | Update JUnit Platform dependency to suite. |
| grails-test-suite-base/src/main/groovy/org/grails/support/MockApplicationContext.java | Add getBeanProvider(ParameterizedTypeReference) to match updated Spring APIs. |
| grails-test-suite-base/build.gradle | Update JUnit Platform dependency to suite. |
| grails-test-examples/plugins/micronaut-singleton/build.gradle | Disable groovydoc task for example plugin. |
| grails-test-examples/plugins/exploded/build.gradle | Disable integrationTest due to Spring Security incompatibility under Boot 4. |
| grails-test-examples/mongodb/test-data-service/build.gradle | Update Testcontainers MongoDB dependency coordinate; disable integrationTest for security incompatibility. |
| grails-test-examples/hibernate5/spring-boot-hibernate/src/main/groovy/example/Application.groovy | Update Boot package relocation for Hibernate JPA autoconfig exclusion. |
| grails-test-examples/hibernate5/spring-boot-hibernate/build.gradle | Add Boot autoconfigure/hibernate compileOnly deps for relocation. |
| grails-test-examples/gsp-sitemesh3/build.gradle | Disable integrationTest due to SiteMesh3 incompatibility with Spring 7. |
| grails-test-examples/gsp-layout/src/test/groovy/org/apache/grails/views/gsp/layout/AbstractGrailsTagTests.groovy | Remove theme support usage; swap to GenericWebApplicationContext; reorder imports. |
| grails-test-examples/gsp-layout/src/integration-test/groovy/GrailsLayoutSpec.groovy | Ignore JSP demo test now that JSP support is removed. |
| grails-test-examples/exploded/build.gradle | Disable integrationTest due to Spring Security incompatibility under Boot 4. |
| grails-test-examples/app3/build.gradle | Disable integrationTest due to Spring Security incompatibility under Boot 4. |
| grails-test-examples/app1/build.gradle | Disable integrationTest due to Spring Security incompatibility under Boot 4. |
| grails-test-core/src/main/groovy/org/grails/plugins/testing/AbstractGrailsMockHttpServletResponse.groovy | Adjust reset behavior for Spring mock response internal changes. |
| grails-test-core/build.gradle | Update JUnit Platform dependency to suite. |
| grails-spring/src/main/groovy/org/grails/spring/GrailsApplicationContext.java | Remove deprecated theme support methods/fields. |
| grails-spring/build.gradle | Update JUnit Platform dependency; exclude vendored Spring UI classes from checkstyle. |
| grails-shell-cli/build.gradle | Update JUnit Platform dependency to suite. |
| grails-services/build.gradle | Update JUnit Platform dependency to suite. |
| grails-rest-transforms/build.gradle | Update JUnit Platform dependency to suite. |
| grails-mimetypes/build.gradle | Update JUnit Platform dependency to suite. |
| grails-logging/src/main/groovy/org/grails/compiler/logging/LoggingTransformer.java | Replace Slf4j AST transformation usage with manual logger field injection. |
| grails-logging/build.gradle | Update JUnit Platform dependency to suite. |
| grails-interceptors/build.gradle | Update JUnit Platform dependency to suite. |
| grails-i18n/src/main/groovy/org/grails/plugins/i18n/I18nAutoConfiguration.java | Update Boot package relocation for WebMvc autoconfiguration. |
| grails-i18n/build.gradle | Add boot-webmvc compileOnly; update JUnit Platform dependency. |
| grails-gsp/spring-boot/src/main/java/grails/gsp/boot/GspAutoConfiguration.java | Update Boot package relocation for WebMvc autoconfiguration. |
| grails-gsp/spring-boot/build.gradle | Add boot-webmvc compileOnly dependency. |
| grails-gsp/plugin/src/test/groovy/org/grails/web/taglib/AbstractGrailsTagTests.groovy | Remove theme support usage; swap to GenericWebApplicationContext; reorder imports. |
| grails-gradle/plugins/src/main/groovy/org/grails/gradle/plugin/core/GrailsGradlePlugin.groovy | Remove Boot loader implementation configuration (removed in Boot 4). |
| grails-gradle/model/build.gradle | Update JUnit Platform dependency to suite. |
| grails-geb/build.gradle | Update Selenium Testcontainers dependency coordinate. |
| grails-encoder/build.gradle | Update JUnit Platform dependency to suite. |
| grails-domain-class/build.gradle | Update JUnit Platform dependency to suite. |
| grails-datasource/build.gradle | Update JUnit Platform dependency to suite. |
| grails-datamapping-rx/build.gradle | Update JUnit Platform dependency to suite. |
| grails-datamapping-core/src/test/groovy/grails/gorm/annotation/transactions/TransactionalTransformSpec.groovy | Update DefaultTransactionStatus constructor usage for Spring 7 signature. |
| grails-databinding/build.gradle | Update JUnit Platform dependency to suite. |
| grails-databinding-core/build.gradle | Update JUnit Platform dependency to suite. |
| grails-data-neo4j/build.gradle | Update JUnit Platform dependency to suite. |
| grails-data-mongodb/boot-plugin/src/test/groovy/org/grails/datastore/gorm/mongodb/boot/autoconfigure/MongoDbGormAutoConfigureWithGeoSpacialSpec.groovy | Update Boot package relocation and MongoDB property keys. |
| grails-data-mongodb/boot-plugin/src/test/groovy/org/grails/datastore/gorm/mongodb/boot/autoconfigure/MongoDbGormAutoConfigurationSpec.groovy | Update Boot package relocation and MongoDB property keys. |
| grails-data-mongodb/boot-plugin/src/main/groovy/org/grails/datastore/gorm/mongodb/boot/autoconfigure/MongoDbGormAutoConfiguration.groovy | Update Boot package relocation for Mongo auto-config/properties. |
| grails-data-mongodb/boot-plugin/build.gradle | Add new Boot mongodb module dependency for relocated classes. |
| grails-data-hibernate5/grails-plugin/src/test/groovy/org/grails/plugin/hibernate/support/MultiDataSourceSessionSpec.groovy | Switch imports to vendored SessionHolder. |
| grails-data-hibernate5/grails-plugin/src/main/groovy/org/grails/plugin/hibernate/support/HibernatePersistenceContextInterceptor.java | Switch imports to vendored Spring ORM Hibernate 5 utilities. |
| grails-data-hibernate5/grails-plugin/src/main/groovy/org/grails/plugin/hibernate/support/GrailsOpenSessionInViewInterceptor.java | Switch imports to vendored Spring ORM Hibernate 5 utilities/interceptor. |
| grails-data-hibernate5/core/src/test/groovy/org/grails/orm/hibernate/connections/SchemaMultiTenantSpec.groovy | Switch imports to vendored SessionHolder. |
| grails-data-hibernate5/core/src/test/groovy/org/apache/grails/data/hibernate5/core/GrailsDataHibernate5TckManager.groovy | Switch imports to vendored SessionFactoryUtils/SessionHolder. |
| grails-data-hibernate5/core/src/test/groovy/grails/gorm/tests/WithNewSessionAndExistingTransactionSpec.groovy | Switch imports to vendored SessionHolder. |
| grails-data-hibernate5/core/src/test/groovy/grails/gorm/tests/validation/BeanValidationSpec.groovy | Replace deprecated Hibernate validator annotation with Jakarta validation. |
| grails-data-hibernate5/core/src/test/groovy/grails/gorm/tests/HibernateOptimisticLockingSpec.groovy | Switch imports to vendored optimistic locking exception. |
| grails-data-hibernate5/core/src/main/java/org/grails/orm/hibernate/support/hibernate5/support/OpenSessionInViewInterceptor.java | Vendored Spring ORM OSIV interceptor (Hibernate 5 support). |
| grails-data-hibernate5/core/src/main/java/org/grails/orm/hibernate/support/hibernate5/support/AsyncRequestInterceptor.java | Vendored Spring ORM async request interceptor (Hibernate 5 support). |
| grails-data-hibernate5/core/src/main/java/org/grails/orm/hibernate/support/hibernate5/SpringSessionSynchronization.java | Vendored Spring ORM transaction synchronization (Hibernate 5 support). |
| grails-data-hibernate5/core/src/main/java/org/grails/orm/hibernate/support/hibernate5/SpringSessionContext.java | Vendored Spring ORM current session context (Hibernate 5 support). |
| grails-data-hibernate5/core/src/main/java/org/grails/orm/hibernate/support/hibernate5/SpringJtaSessionContext.java | Vendored Spring ORM JTA session context (Hibernate 5 support). |
| grails-data-hibernate5/core/src/main/java/org/grails/orm/hibernate/support/hibernate5/SpringFlushSynchronization.java | Vendored Spring ORM flush synchronization (Hibernate 5 support). |
| grails-data-hibernate5/core/src/main/java/org/grails/orm/hibernate/support/hibernate5/SpringBeanContainer.java | Vendored Spring ORM bean container integration (Hibernate 5 support). |
| grails-data-hibernate5/core/src/main/java/org/grails/orm/hibernate/support/hibernate5/SessionHolder.java | Vendored Spring ORM SessionHolder (Hibernate 5 support). |
| grails-data-hibernate5/core/src/main/java/org/grails/orm/hibernate/support/hibernate5/SessionFactoryUtils.java | Vendored Spring ORM SessionFactoryUtils (Hibernate 5 support). |
| grails-data-hibernate5/core/src/main/java/org/grails/orm/hibernate/support/hibernate5/LocalSessionFactoryBuilder.java | Vendored Spring ORM SessionFactory builder (Hibernate 5 support). |
| grails-data-hibernate5/core/src/main/java/org/grails/orm/hibernate/support/hibernate5/LocalSessionFactoryBean.java | Vendored Spring ORM SessionFactory FactoryBean (Hibernate 5 support). |
| grails-data-hibernate5/core/src/main/java/org/grails/orm/hibernate/support/hibernate5/HibernateTransactionManager.java | Vendored Spring ORM HibernateTransactionManager (Hibernate 5 support). |
| grails-data-hibernate5/core/src/main/java/org/grails/orm/hibernate/support/hibernate5/HibernateSystemException.java | Vendored Spring ORM exception type (Hibernate 5 support). |
| grails-data-hibernate5/core/src/main/java/org/grails/orm/hibernate/support/hibernate5/HibernateQueryException.java | Vendored Spring ORM exception type (Hibernate 5 support). |
| grails-data-hibernate5/core/src/main/java/org/grails/orm/hibernate/support/hibernate5/HibernateOptimisticLockingFailureException.java | Vendored Spring ORM exception type (Hibernate 5 support). |
| grails-data-hibernate5/core/src/main/java/org/grails/orm/hibernate/support/hibernate5/HibernateObjectRetrievalFailureException.java | Vendored Spring ORM exception type (Hibernate 5 support). |
| grails-data-hibernate5/core/src/main/java/org/grails/orm/hibernate/support/hibernate5/HibernateJdbcException.java | Vendored Spring ORM exception type (Hibernate 5 support). |
| grails-data-hibernate5/core/src/main/java/org/grails/orm/hibernate/support/hibernate5/HibernateExceptionTranslator.java | Vendored Spring ORM persistence exception translator. |
| grails-data-hibernate5/core/src/main/java/org/grails/orm/hibernate/support/hibernate5/HibernateCallback.java | Vendored Spring ORM callback interface. |
| grails-data-hibernate5/core/src/main/java/org/grails/orm/hibernate/support/hibernate5/ConfigurableJtaPlatform.java | Vendored Spring ORM JTA platform adapter. |
| grails-data-hibernate5/core/src/main/groovy/org/grails/orm/hibernate/HibernateMappingContextSessionFactoryBean.java | Switch to vendored HibernateExceptionTranslator import. |
| grails-data-hibernate5/core/src/main/groovy/org/grails/orm/hibernate/HibernateGormStaticApi.groovy | Switch to vendored SessionHolder import. |
| grails-data-hibernate5/core/src/main/groovy/org/grails/orm/hibernate/GrailsSessionContext.java | Switch to vendored Spring ORM session/flush synchronization types. |
| grails-data-hibernate5/core/src/main/groovy/org/grails/orm/hibernate/GrailsHibernateTransactionManager.groovy | Switch to vendored HibernateTransactionManager/SessionHolder. |
| grails-data-hibernate5/core/src/main/groovy/org/grails/orm/hibernate/GrailsHibernateTemplate.java | Switch to vendored SessionFactoryUtils/SessionHolder. |
| grails-data-hibernate5/core/src/main/groovy/grails/orm/HibernateCriteriaBuilder.java | Switch to vendored SessionHolder. |
| grails-data-hibernate5/core/build.gradle | Add Spring Web deps; exclude vendored code from checkstyle. |
| grails-data-hibernate5/boot-plugin/src/test/groovy/org/grails/datastore/gorm/boot/autoconfigure/HibernateGormAutoConfigurationSpec.groovy | Remove outdated Boot JDBC imports in spec. |
| grails-data-hibernate5/boot-plugin/src/main/groovy/org/grails/datastore/gorm/boot/autoconfigure/HibernateGormAutoConfiguration.groovy | Update Boot package relocations for datasource/hibernate autoconfig. |
| grails-data-hibernate5/boot-plugin/build.gradle | Add compile/test deps for relocated Boot JDBC/Hibernate modules. |
| grails-data-graphql/examples/spring-boot-app/src/main/groovy/com/example/demo/DemoApplication.groovy | Update Boot package relocation for Hibernate JPA autoconfig exclusion. |
| grails-core/src/test/groovy/org/grails/compiler/injection/ApplicationClassInjectorSpec.groovy | Update expected Boot autoconfiguration class names (new packages). |
| grails-core/src/test/groovy/grails/boot/config/GrailsEnvironmentPostProcessorSpec.groovy | Update bootstrap API import relocation. |
| grails-core/src/main/resources/META-INF/spring.factories | Update BootstrapRegistryInitializer key for Boot 4. |
| grails-core/src/main/groovy/org/grails/compiler/injection/ApplicationClassInjector.groovy | Update excluded Boot autoconfiguration class list to new packages. |
| grails-core/src/main/groovy/org/apache/grails/core/GrailsBootstrapRegistryInitializer.java | Update bootstrap API imports + Javadoc key reference. |
| grails-core/src/main/groovy/grails/config/external/ExternalConfigRunListener.groovy | Update bootstrap API import relocation. |
| grails-core/src/main/groovy/grails/boot/GrailsApp.groovy | Update WebServerApplicationContext import relocation. |
| grails-core/src/main/groovy/grails/boot/config/GrailsEnvironmentPostProcessor.java | Update bootstrap API import relocation. |
| grails-core/build.gradle | Add modularized spring-boot-web-server dependency; update JUnit Platform dependency. |
| grails-converters/build.gradle | Update JUnit Platform dependency to suite. |
| grails-controllers/src/main/groovy/org/grails/plugins/web/controllers/ControllersAutoConfiguration.java | Update Boot package relocations for servlet/webmvc autoconfigure classes. |
| grails-controllers/build.gradle | Add Boot webmvc/servlet modules; update JUnit Platform dependency. |
| grails-console/build.gradle | Update JUnit Platform dependency to suite. |
| grails-common/build.gradle | Update JUnit Platform dependency to suite. |
| grails-codecs/build.gradle | Update JUnit Platform dependency to suite. |
| grails-codecs-core/build.gradle | Update JUnit Platform dependency to suite. |
| grails-bootstrap/build.gradle | Update JUnit Platform dependency to suite. |
| grails-bom/build.gradle | Override Spring Boot groovy.version property to keep Groovy 4.0.x for Grails. |
| dependencies.gradle | Upgrade Spring Boot version and Groovy version; add loader-tools to gradle BOM deps. |
| build.gradle | Force Groovy 4.0.31 artifacts to override Spring Boot’s default Groovy 5. |
| build-logic/docs-core/build.gradle | Update JUnit Platform dependency to suite. |
| AGENTS.md | Update documented Spring Boot/Framework versions. |
| .agents/skills/grails-developer/SKILL.md | Update skill documentation for new Spring Boot/Framework versions. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
...n/java/org/grails/orm/hibernate/support/hibernate5/support/OpenSessionInViewInterceptor.java
Show resolved
Hide resolved
grails-web-common/src/main/groovy/org/grails/web/config/http/GrailsFilterOrder.java
Outdated
Show resolved
Hide resolved
grails-web-boot/src/test/groovy/grails/boot/GrailsSpringApplicationSpec.groovy
Outdated
Show resolved
Hide resolved
grails-web-boot/src/test/groovy/grails/boot/EmbeddedContainerWithGrailsSpec.groovy
Outdated
Show resolved
Hide resolved
- Update vendored OpenSessionInViewInterceptor Javadoc @link and @see references to point to the vendored HibernateTransactionManager class instead of the removed org.springframework.orm.hibernate5 package - Clarify GrailsFilterOrder Javadoc to state the concrete value (-100) and cite the original OrderedFilter.REQUEST_WRAPPER_FILTER_MAX_ORDER computation instead of referencing an undefined symbol - Clean up GrailsSpringApplicationSpec and EmbeddedContainerWithGrailsSpec to remove commented-out code and placeholder assertions that would silently pass if re-enabled; tests now throw UnsupportedOperationException behind @ignore with TODO markers for Spring Boot 4.0 rework Assisted-by: Claude Code <Claude@Claude.ai>
✅ All tests passed ✅🏷️ Commit: 0fd14cd Learn more about TestLens at testlens.app. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR upgrades Grails Core to Spring Boot 4.0.5 and Spring Framework 7.0.6, bringing major framework updates and compatibility fixes.
This PR uses Groovy 4.0.x and Hibernate 5.6-jakarta, since work on Groovy 5 and Hibernate 7.2 is progressing on other branches.
This is the minimum amount required for Grails to run on Spring Boot 4 and Hibernate 5.6-jakarta
Includes merge from 8.0.x branch (7.0.x/7.1.x merge-ups, PluginDiscovery system, deprecations, new
grails-testing-support-http-clientmodule,@CompileStatictag lib support,DatabaseCleanupannotation inheritance, functional test migrations)Key Changes
spring.data.mongodb.*tospring.mongodb.*(Spring Boot 4 migration)Detailed Change Inventory
grails-data-hibernate5/core/src/main/java/.../hibernate5/spring.data.mongodb.*tospring.mongodb.*Breaking Changes in Spring Boot 4 / Spring Framework 7
Package Relocations (Spring Boot 4)
Spring Boot 4 restructured its autoconfigure modules. The following classes moved:
DataSourceAutoConfigurationorg.springframework.boot.autoconfigure.jdbcorg.springframework.boot.jdbc.autoconfigureReactorAutoConfigurationorg.springframework.boot.autoconfigure.reactororg.springframework.boot.reactor.autoconfigureHibernateJpaAutoConfigurationorg.springframework.boot.autoconfigure.orm.jpaorg.springframework.boot.hibernate.autoconfigureMongoAutoConfigurationorg.springframework.boot.autoconfigure.mongoorg.springframework.boot.mongodb.autoconfigureAnnotationConfigServletWebServerApplicationContextorg.springframework.boot.web.servlet.contextorg.springframework.boot.web.server.servlet.contextBootstrapRegistryorg.springframework.bootorg.springframework.boot.bootstrapBootstrapRegistryInitializerorg.springframework.bootorg.springframework.boot.bootstrapConfigurableBootstrapContextorg.springframework.bootorg.springframework.boot.bootstrapProperty Renames (Spring Boot 4)
spring.data.mongodb.hostspring.mongodb.hostspring.data.mongodb.portspring.mongodb.portspring.data.mongodb.urispring.mongodb.urispring.data.mongodb.databasespring.mongodb.databaseRemoved APIs
SecurityProperties.DEFAULT_FILTER_ORDER-100inGrailsFiltersAnnotationConfigServletWebApplicationContextGenericWebApplicationContextfor testingDispatcherServlettheme supportMappedInterceptor.matches(String, PathMatcher)matches(HttpServletRequest)HandlerAdapter.getLastModified()LoaderImplementationenumspring.factories Key Changes (Spring Boot 4)
org.springframework.boot.BootstrapRegistryInitializerorg.springframework.boot.bootstrap.BootstrapRegistryInitializerConstructor Changes (Spring Framework 7)
DefaultTransactionStatusnow requires 8 parameters (addedtransactionNameandnested)Workarounds
Files Changed
Core Module Updates
ApplicationClassInjector.groovy- Updated excluded auto-configuration class pathsGrailsApplicationCompilerAutoConfiguration.java- Updated DataSourceAutoConfiguration pathControllersAutoConfiguration.java- Import reorganization for new packagesGrailsFilters.java- Removed SecurityProperties dependency, added DEFAULT_FILTER_ORDER constantGrailsGradlePlugin.groovy- Removed LoaderImplementation referencesGrailsEnvironmentPostProcessor.java- Updated bootstrap API imports for Spring Boot 4 package relocationGrailsBootstrapRegistryInitializer.java- Updated bootstrap API imports for Spring Boot 4 package relocationspring.factories- Updated BootstrapRegistryInitializer key for Spring Boot 4 package relocationGSP / Theme Removal
GspAutoConfiguration.java- Removed theme resolver configurationGrailsApplicationContext.java- Removed ThemeSource field, onRefresh(), getTheme()GrailsWebApplicationContext.java- Removed ThemeSource import and interface (removed in Spring Framework 7)Testing Support
GrailsApplicationBuilder.groovy- Use GenericWebApplicationContext instead of AnnotationConfigServletWebApplicationContext; integrated 8.0.x PluginDiscovery systemMockApplicationContext.java- AddedgetBeanProvider(ParameterizedTypeReference)methodAbstractGrailsTagTests.groovy- Added static constants for removed theme attributesTransactionalTransformSpec.groovy- Updated DefaultTransactionStatus constructor callsDefaultUrlCreatorTests.groovy- Fixed ambiguous method overloading for setCharacterEncodingURL Mappings
UrlMappingsHandlerMapping.groovy- Updated MappedInterceptor.matches() call signatureUrlMappingsInfoHandlerAdapter.groovy- Deprecated getLastModified() methodMongoDB Support
MongoDbGormAutoConfiguration.groovy- Updated MongoAutoConfiguration import pathMongoDbGormAutoConfigurationSpec.groovy- Updated property names for Spring Boot 4MongoDbGormAutoConfigureWithGeoSpacialSpec.groovy- Updated property names for Spring Boot 4StartMongoGrailsIntegrationExtension.groovy- Updated spring.mongodb.uri propertymongodb/base/application.yml- Updated spring.mongodb.host/port propertiesBuild Configuration
grails-data-hibernate5/boot-plugin/build.gradle- Added spring-boot-jdbc and spring-boot-hibernate test dependenciesgrails-test-examples/hibernate5/spring-boot-hibernate/build.gradle- Added spring-boot-hibernate for package relocationTest Status
CI Build Status
All CI test suites pass when Apache repository (repository.apache.org) is reachable:
./gradlew build -PonlyCoreTests)./gradlew build -PonlyFunctionalTests)./gradlew build -PonlyHibernate5Tests)./gradlew build -PonlyMongodbTests)Note: Some CI runs may fail due to transient connectivity issues with repository.apache.org (37.27.138.133). These are infrastructure issues, not test failures.
Known Build Issues (WIP)
ApplicationClassInjectorSpec- test expects old autoconfigure package pathDisabled Tests (External Plugin Incompatibilities)
The following test modules have their
integrationTesttask disabled at the build level, since the Spring Security auto-configuration failure prevents the ApplicationContext from loading (cascading to all tests in the module):app1ReflectionUtils.getApplication()removed in Spring Boot 4app3explodedplugins/explodedmongodb/test-data-servicegsp-sitemesh3Additionally, the following individual tests are disabled:
gsp-layout/GrailsLayoutSpec."jsp demo"issue-views-182/CustomErrorSpecRenderMethodTests.testRenderFile(@PendingFeature)Open Decisions
micronautPlatformVersion=4.9.2pulls Micronaut Spring 5.x (targets Spring Boot 3.x)micronaut-spring-boot-starter:6.0.0-M1for Spring Boot 4 compat, (b) Wait for Micronaut 5 stable releaseRemaining Work
ApplicationClassInjectorSpecfor new autoconfigure package pathsReflectionUtils.getApplication()removalAction Required
The following external plugins/libraries need updates for full Spring Boot 4 compatibility: