GaneshPatil7517 opened a new pull request, #16005:
URL: https://github.com/apache/dubbo/pull/16005
This PR fixes compatibility issues with Spring Boot 3.5.x and Spring Cloud
2025.0.0 by completing the migration to Spring Boot 3.x auto-configuration
registration patterns.
Fixes: #15996
## Problem
When using Apache Dubbo with Spring Boot 3.5.x and Spring Cloud 2025.0.0,
users may experience:
- Auto-configuration not loading correctly due to incomplete `.imports` file
registration
- Potential NPE in `SpringBoot3Condition` if version string is null/empty
- Missing `DubboExtensionEndpointAutoConfiguration` in actuator
spring.factories
## Root Cause
1. `EnvironmentPostProcessor` and `ApplicationContextInitializer` were only
registered via `spring.factories`, not the newer `.imports` files used by
Spring Boot 3.x
2. `SpringBoot3Condition` used direct character access without null checking
3. `spring.factories` in actuator-autoconfigure was missing an entry
## Solution
### 1. Added Spring Boot 3.x `.imports` registration files
- `org.springframework.boot.env.EnvironmentPostProcessor.imports`
- `org.springframework.context.ApplicationContextInitializer.imports`
### 2. Improved `SpringBoot3Condition` robustness
- Added null-safe version parsing with try-catch
- Added Jakarta Servlet API fallback detection when version string
unavailable
- Added proper Javadoc documentation
### 3. Simplified `SpringBoot12Condition`
- Now uses inverse of `SpringBoot3Condition.IS_SPRING_BOOT_3`
- Ensures consistent behavior between conditions
### 4. Fixed actuator spring.factories
- Added missing `DubboExtensionEndpointAutoConfiguration`
## Testing
- Added `SpringBoot3CompatibilityTest` with 4 test methods:
- `testDubboCoreBeansLoaded` - Verifies core Dubbo beans load via
auto-configuration
- `testSpringBootVersionDetection` - Validates version detection logic
- `testEnvironmentPostProcessorApplied` - Confirms
EnvironmentPostProcessor registration
- `testDubboConfigMultiplePropertySet` - Checks default property
configuration
All tests pass on both Spring Boot 2.x and 3.x environments.
## Compatibility
- ✅ Spring Boot 2.7.x (backwards compatible via spring.factories)
- ✅ Spring Boot 3.0.x - 3.5.x (via .imports files)
- ✅ Spring Cloud 2025.0.0
- ✅ Spring Cloud Alibaba 2025.0.0.0
## Checklist
- Code follows Apache Dubbo coding conventions
- Tests added for new functionality
- All existing tests pass
- Backwards compatibility maintained
- Commit message follows conventional commits format
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]