What's new in EzyPlatform 1.3.4?
This release strengthens security token generation, enhances the Scheduler and Setting Service, improves request logging, and introduces several refinements for better stability and maintainability.
-
Enhanced secure token generationAll critical security tokens now use
SecureRandomHashGenerators.generate(...)to improve randomness and security. This includes the Admin password reset token, the User forgot password token, and the account activation key generated during user registration. -
Extended Scheduler APIsThe Scheduler now provides
isStarted()to check whether it has started andonStarted(Runnable listener)to register logic that runs immediately after the Scheduler starts. In addition, the public overload ofscheduleAtFixRate(...)allows developers to explicitly choose whether a scheduled task should run once or repeatedly. -
Improved Setting watch mechanism
DefaultSettingService.watchLastUpdatedTime(...)no longer executes its callback immediately upon registration. Instead, the callback is triggered only after the Scheduler has started, preventing components that depend on the Scheduler or encryption keys from running too early during application startup. -
Added utility for creating default settingsIntroduced
SettingService.saveSettingIfNotExists(name, dataType, value), making it easy to create default settings only when they do not already exist. Integration tests have also been added to verify the correctness of this workflow. -
Improved request loggingRequest logs now read the HTTP method directly from
HttpServletRequestand record the query string instead of the parameter map. This produces cleaner logs that more accurately reflect the original request URL while continuing to exclude management URIs from logging. -
Renamed the auto-pass management URI settingThe setting
auto_pass_management_urishas been renamed toadmin_auto_pass_management_urisfor improved clarity and consistency. When upgrading, systems using the previous setting name in the database or configuration files should migrate to the new name to ensure the feature continues to function correctly. -
Additional refinements
Sha256Uuids.generateUuid(...)no longer includesSystem.currentTimeMillis()in the hash input when generating UUIDs. Several boolean and long literal values have also been standardized using shared constants such asBoolean.TRUE,Boolean.FALSE, andZERO_LONG, resulting in cleaner and more maintainable code.