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
SessionScope
to 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
JsonParser
to 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
quit
command 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
EmbeddedAspectran
fromrelease()
todestroy()
.
🐞 Key Bug Fixes
- Bean and Profile Configuration Correctness
- Strengthened validation to prevent configuration errors by ignoring and issuing a warning if
@Profile
or other configuration annotations are used without the@Component
annotation. - Fixed a critical bug in
SessionScope
that incorrectly matched beans by class name instead of ID, resolving unpredictable behavior, especially in clustered environments. - Resolved an issue where a
NoUniqueBeanException
would 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
restart
command 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
NotSerializableException
inConcurrencyThrottleSupport
. - 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