Skip to content

Commit d142191

Browse files
committed
Update
1 parent 884e846 commit d142191

File tree

2 files changed

+93
-0
lines changed

2 files changed

+93
-0
lines changed
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
---
2+
subheadline: Releases
3+
title: Aspectran 9.2.0 Release Notes
4+
categories:
5+
- news
6+
tags:
7+
- Release
8+
published: true
9+
---
10+
11+
Aspectran 9.2.0 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.
12+
<!--more-->
13+
14+
### πŸš€ Key Enhancements
15+
16+
* **Bean Scope Management and Concurrency Performance**
17+
* 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.
18+
* Removed API restrictions on `SessionScope` to allow manual destruction of specific bean instances, increasing usability in scenarios like sticky sessions.
19+
20+
* **Refactoring Across Core Components**
21+
* **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".
22+
* **MyBatis Integration**: Improved the internal structure of the MyBatis integration module by clarifying responsibilities and increasing maintainability.
23+
* **Internal Logic**: Enhanced the stability of several utility classes, such as introducing a `JsonParser` to separate JSON processing logic and improving error handling in `RestRequest`.
24+
25+
* **Shell and Daemon Environment Stability**
26+
* Greatly improved stability in the development environment by fixing several critical bugs that occurred during a shell `restart`.
27+
* 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.
28+
29+
* **Code Quality and Documentation**
30+
* 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.
31+
* Clarified API roles by renaming the resource release method in `EmbeddedAspectran` from `release()` to `destroy()`.
32+
33+
### 🐞 Key Bug Fixes
34+
35+
* **Bean and Profile Configuration Correctness**
36+
* Strengthened validation to prevent configuration errors by ignoring and issuing a warning if `@Profile` or other configuration annotations are used without the `@Component` annotation.
37+
* Fixed a critical bug in `SessionScope` that incorrectly matched beans by class name instead of ID, resolving unpredictable behavior, especially in clustered environments.
38+
* Resolved an issue where a `NoUniqueBeanException` would occur when multiple profiled beans were present, ensuring profile-based bean selection works correctly.
39+
40+
* **Service Lifecycle Bugs**
41+
* **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.
42+
* **Request Handling During Startup**: Improved stability by making incoming requests wait for service startup to complete, instead of rejecting them.
43+
44+
* **Other Important Fixes**
45+
* Fixed a `NotSerializableException` in `ConcurrencyThrottleSupport`.
46+
* Fixed a bug where the Quartz scheduler was not created under certain conditions and added logic to prevent re-initialization.
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
---
2+
subheadline: Releases
3+
title: Aspectran 9.2.0 릴리즈 λ…ΈνŠΈ
4+
categories:
5+
- news
6+
tags:
7+
- Release
8+
published: true
9+
---
10+
11+
Aspectran 9.2.0은 ν”„λ ˆμž„μ›Œν¬μ˜ μ•ˆμ •μ„±, μ •ν™•μ„±, μ„±λŠ₯을 λŒ€ν­ ν–₯μƒμ‹œν‚€λŠ” 데 쀑점을 λ‘” μ€‘μš”ν•œ λ¦΄λ¦¬μŠ€μž…λ‹ˆλ‹€. λ‚΄λΆ€ μ•„ν‚€ν…μ²˜μ— λŒ€ν•œ κ΄‘λ²”μœ„ν•œ λ¦¬νŒ©ν† λ§κ³Ό μ—¬λŸ¬ μ€‘λŒ€ν•œ 버그 μˆ˜μ •μ„ 톡해 λ”μš± κ²¬κ³ ν•˜κ³  μ‹ λ’°ν•  수 μžˆλŠ” κΈ°λ°˜μ„ λ§ˆλ ¨ν–ˆμŠ΅λ‹ˆλ‹€.
12+
<!--more-->
13+
14+
### πŸš€ μ£Όμš” κ°œμ„  사항 (Key Enhancements)
15+
16+
* **빈(Bean) μŠ€μ½”ν”„ 관리 및 λ™μ‹œμ„± μ„±λŠ₯ ν–₯상**
17+
* `FactoryBean`을 톡해 λΉˆμ„ 생성할 λ•Œμ˜ 락(Lock) μ „λž΅μ„ μ΅œμ ν™”ν•˜μ—¬, λΆˆν•„μš”ν•œ 경합을 쀄이고 λ™μ‹œμ„± ν™˜κ²½μ—μ„œμ˜ μ„±λŠ₯을 크게 ν–₯μƒμ‹œμΌ°μŠ΅λ‹ˆλ‹€. μ΄λŠ” 닀쀑 μŠ€λ ˆλ“œ ν™˜κ²½μ—μ„œ 더 λ‚˜μ€ μ²˜λ¦¬λŸ‰μ„ 보μž₯ν•©λ‹ˆλ‹€.
18+
* μ„Έμ…˜ μŠ€μ½”ν”„(`SessionScope`)μ—μ„œ νŠΉμ • 빈 μΈμŠ€ν„΄μŠ€λ₯Ό μˆ˜λ™μœΌλ‘œ μ œκ±°ν•  수 μžˆλ„λ‘ API의 μ œμ•½μ„ ν•΄μ œν•˜μ—¬, μŠ€ν‹°ν‚€ μ„Έμ…˜(sticky session)κ³Ό 같은 μ‹œλ‚˜λ¦¬μ˜€μ—μ„œ μœ μš©μ„±μ„ λ†’μ˜€μŠ΅λ‹ˆλ‹€.
19+
20+
* **핡심 μ»΄ν¬λ„ŒνŠΈ μ „λ°˜μ˜ λ¦¬νŒ©ν† λ§**
21+
* **μ„Έμ…˜ 관리**: Lettuce 기반 μ„Έμ…˜ μ €μž₯μ†Œμ˜ 곡톡 λ‘œμ§μ„ μΆ”μƒν™”ν•˜μ—¬ μ½”λ“œ 쀑볡을 μ œκ±°ν•˜κ³ , "Master-Replica" μš©μ–΄λ₯Ό "Primary-Replica"둜 ν˜„λŒ€ν™”ν•˜λŠ” λ“± 전체적인 ꡬ쑰λ₯Ό κ°œμ„ ν–ˆμŠ΅λ‹ˆλ‹€.
22+
* **MyBatis 톡합**: MyBatis 연동 λͺ¨λ“ˆμ˜ λ‚΄λΆ€ ꡬ쑰λ₯Ό λ¦¬νŒ©ν† λ§ν•˜μ—¬ μ±…μž„ 뢄리λ₯Ό λͺ…ν™•νžˆ ν•˜κ³  μœ μ§€λ³΄μˆ˜μ„±μ„ λ†’μ˜€μŠ΅λ‹ˆλ‹€.
23+
* **λ‚΄λΆ€ 둜직 κ°œμ„ **: `JsonParser`λ₯Ό λ„μž…ν•˜μ—¬ JSON 처리 λ‘œμ§μ„ λΆ„λ¦¬ν•˜κ³ , `RestRequest`의 였λ₯˜ 처리 방식을 κ°œμ„ ν•˜λŠ” λ“± μ—¬λŸ¬ μœ ν‹Έλ¦¬ν‹° 클래슀의 μ•ˆμ •μ„±μ„ κ°•ν™”ν–ˆμŠ΅λ‹ˆλ‹€.
24+
25+
* **μ…Έ(Shell) 및 데λͺ¬(Daemon) ν™˜κ²½ μ•ˆμ •μ„± κ°•ν™”**
26+
* μ…Έ μž¬μ‹œμž‘(`restart`) μ‹œ λ°œμƒν•˜λ˜ μ—¬λŸ¬ 치λͺ…적인 버그λ₯Ό ν•΄κ²°ν•˜μ—¬, 개발 ν™˜κ²½μ—μ„œμ˜ μ•ˆμ •μ„±μ„ 크게 ν–₯μƒμ‹œμΌ°μŠ΅λ‹ˆλ‹€.
27+
* 슀크립트 ν™˜κ²½μ—μ„œ `quit` λͺ…령이 확인 ν”„λ‘¬ν”„νŠΈ 없이 μ¦‰μ‹œ μ’…λ£Œλ˜λ„λ‘ κ°œμ„ ν•˜κ³ , λŒ€ν™”ν˜• λͺ¨λ“œ 감지 λ‘œμ§μ— 캐싱을 λ„μž…ν•˜μ—¬ μ„±λŠ₯을 μ΅œμ ν™”ν–ˆμŠ΅λ‹ˆλ‹€.
28+
29+
* **μ½”λ“œ ν’ˆμ§ˆ 및 λ¬Έμ„œ κ°œμ„ **
30+
* ν”„λ‘œμ νŠΈ μ „λ°˜μ— 걸쳐 Javadoc 주석을 λŒ€λŒ€μ μœΌλ‘œ λ³΄κ°•ν•˜κ³ , λ‚΄λΆ€ λ‘œκΉ… 및 μ‚¬μš©μž λ©”μ‹œμ§€λ₯Ό λͺ…ν™•ν•˜κ³  일관성 있게 닀듬어 개발자 κ²½ν—˜μ„ ν–₯μƒμ‹œμΌ°μŠ΅λ‹ˆλ‹€.
31+
* `EmbeddedAspectran`의 μžμ› ν•΄μ œ λ©”μ„œλ“œ 이름을 `release()`μ—μ„œ `destroy()`둜 λ³€κ²½ν•˜μ—¬ API의 역할을 λͺ…ν™•νžˆ ν–ˆμŠ΅λ‹ˆλ‹€.
32+
33+
### 🐞 μ£Όμš” 버그 μˆ˜μ • (Key Bug Fixes)
34+
35+
* **빈(Bean) 및 ν”„λ‘œνŒŒμΌ(Profile) μ„€μ •μ˜ μ •ν™•μ„± 확보**
36+
* `@Component` μ–΄λ…Έν…Œμ΄μ…˜ 없이 `@Profile` λ“± λ‹€λ₯Έ μ„€μ • μ–΄λ…Έν…Œμ΄μ…˜μ„ μ‚¬μš©ν•  경우, 이λ₯Ό λ¬΄μ‹œν•˜κ³  κ²½κ³  λ©”μ‹œμ§€λ₯Ό 좜λ ₯ν•˜λ„λ‘ μˆ˜μ •ν•˜μ—¬ μ„€μ • 였λ₯˜λ₯Ό λ°©μ§€ν•©λ‹ˆλ‹€.
37+
* `SessionScope`μ—μ„œ IDκ°€ μ•„λ‹Œ 클래슀 μ΄λ¦„μœΌλ‘œ λΉˆμ„ 잘λͺ» λ§€μΉ­ν•˜λ˜ 치λͺ…적인 버그λ₯Ό μˆ˜μ •ν•˜μ—¬, 특히 ν΄λŸ¬μŠ€ν„° ν™˜κ²½μ—μ„œ λ°œμƒν•  수 μžˆλŠ” 예츑 λΆˆκ°€λŠ₯ν•œ 문제λ₯Ό ν•΄κ²°ν–ˆμŠ΅λ‹ˆλ‹€.
38+
* μ—¬λŸ¬ ν”„λ‘œνŒŒμΌ 빈이 μ‘΄μž¬ν•  λ•Œ `NoUniqueBeanException`이 λ°œμƒν•˜λ˜ 문제λ₯Ό ν•΄κ²°ν•˜μ—¬ ν”„λ‘œνŒŒμΌ 기반의 빈 선택이 μ •ν™•ν•˜κ²Œ λ™μž‘ν•˜λ„λ‘ μˆ˜μ •ν–ˆμŠ΅λ‹ˆλ‹€.
39+
40+
* **μ„œλΉ„μŠ€ 라이프사이클 κ΄€λ ¨ 버그 μˆ˜μ •**
41+
* **μ…Έ μž¬μ‹œμž‘ μ‹œ 비정상 μ’…λ£Œ 문제**: μž„λ² λ””λ“œ Jetty μ„œλ²„μ˜ 비동기 μ’…λ£Œ ν”„λ‘œμ„ΈμŠ€λ‘œ 인해 `restart` λͺ…λ Ή ν›„ 셸이 예기치 μ•Šκ²Œ μ’…λ£Œλ˜λ˜ 문제λ₯Ό ν•΄κ²°ν–ˆμŠ΅λ‹ˆλ‹€.
42+
* **Jetty/Logback μž¬μ‹œμž‘ μ‹œ λ‘œκΉ… 쀑단 문제**: μ…Έ ν™˜κ²½μ—μ„œ `restart` μ‹œ Logback μ»¨ν…μŠ€νŠΈκ°€ μ’…λ£Œλ˜μ–΄ λͺ¨λ“  λ‘œκΉ…μ΄ μ€‘λ‹¨λ˜λ˜ 문제λ₯Ό ν•΄κ²°ν–ˆμŠ΅λ‹ˆλ‹€.
43+
* **μ„œλΉ„μŠ€ μ‹œμž‘ 쀑 μš”μ²­ 처리**: μ„œλΉ„μŠ€κ°€ μ‹œμž‘λ˜λŠ” λ™μ•ˆ λ“€μ–΄μ˜¨ μš”μ²­μ„ κ±°λΆ€ν•˜λŠ” λŒ€μ‹ , μ‹œμž‘μ΄ μ™„λ£Œλ  λ•ŒκΉŒμ§€ λŒ€κΈ°ν•˜λ„λ‘ μˆ˜μ •ν•˜μ—¬ μ•ˆμ •μ„±μ„ λ†’μ˜€μŠ΅λ‹ˆλ‹€.
44+
45+
* **기타 μ€‘μš” 버그 μˆ˜μ •**
46+
* `ConcurrencyThrottleSupport` ν΄λž˜μŠ€μ—μ„œ `NotSerializableException`이 λ°œμƒν•˜λ˜ 직렬화 문제λ₯Ό ν•΄κ²°ν–ˆμŠ΅λ‹ˆλ‹€.
47+
* νŠΉμ • μ‘°κ±΄μ—μ„œ Quartz μŠ€μΌ€μ€„λŸ¬κ°€ μƒμ„±λ˜μ§€ μ•Šλ˜ 버그λ₯Ό μˆ˜μ •ν•˜κ³ , μž¬μ΄ˆκΈ°ν™”λ₯Ό λ°©μ§€ν•˜λŠ” λ‘œμ§μ„ μΆ”κ°€ν–ˆμŠ΅λ‹ˆλ‹€.

0 commit comments

Comments
Β (0)