Aspectran 9.2 is a significant release focused on dramatically improving the framework’s stability, correctness, and performance. Through extensive refactoring of the internal architecture and several critical bug fixes, it provides a more robust and reliable foundation.
🚀 Key Enhancements
- Bean Scope Management and Concurrency Performance
- Optimized the locking strategy when creating beans via
FactoryBean, significantly reducing unnecessary contention and improving performance in concurrent environments. This ensures better throughput in multi-threaded applications. - Removed API restrictions on
SessionScopeto allow manual destruction of specific bean instances, increasing usability in scenarios like sticky sessions.
- Optimized the locking strategy when creating beans via
- Refactoring Across Core Components
- Session Management: Refactored the Lettuce-based session store by abstracting common logic to reduce code duplication and modernized terminology from “Master-Replica” to “Primary-Replica”.
- MyBatis Integration: Improved the internal structure of the MyBatis integration module by clarifying responsibilities and increasing maintainability.
- Internal Logic: Enhanced the stability of several utility classes, such as introducing a
JsonParserto separate JSON processing logic and improving error handling inRestRequest.
- Shell and Daemon Environment Stability
- Greatly improved stability in the development environment by fixing several critical bugs that occurred during a shell
restart. - Enhanced usability in scripted environments by allowing the
quitcommand to exit immediately without a prompt in non-interactive mode, and optimized performance by caching interactive mode detection logic.
- Greatly improved stability in the development environment by fixing several critical bugs that occurred during a shell
- Code Quality and Documentation
- Significantly improved the developer experience by extensively adding and refining Javadoc comments across the project and making internal logging and user messages clearer and more consistent.
- Clarified API roles by renaming the resource release method in
EmbeddedAspectranfromrelease()todestroy().
🐞 Key Bug Fixes
- Bean and Profile Configuration Correctness
- Strengthened validation to prevent configuration errors by ignoring and issuing a warning if
@Profileor other configuration annotations are used without the@Componentannotation. - Fixed a critical bug in
SessionScopethat incorrectly matched beans by class name instead of ID, resolving unpredictable behavior, especially in clustered environments. - Resolved an issue where a
NoUniqueBeanExceptionwould occur when multiple profiled beans were present, ensuring profile-based bean selection works correctly.
- Strengthened validation to prevent configuration errors by ignoring and issuing a warning if
- Service Lifecycle Bugs
- Shell Restart Failures: Fixed critical bugs that caused the shell to terminate unexpectedly or logging to fail after a
restartcommand due to issues in the asynchronous shutdown process of the embedded Jetty server and Logback context handling. - Request Handling During Startup: Improved stability by making incoming requests wait for service startup to complete, instead of rejecting them.
- Shell Restart Failures: Fixed critical bugs that caused the shell to terminate unexpectedly or logging to fail after a
- Other Important Fixes
- Fixed a
NotSerializableExceptioninConcurrencyThrottleSupport. - Fixed a bug where the Quartz scheduler was not created under certain conditions and added logic to prevent re-initialization.
- Fixed a
Juho Jeong NEWS
Release