이번 릴리즈는 핵심 IoC 컨테이너(bean 모듈)의 대대적인 개편을 특징으로 하는 주요 업데이트입니다. 빈(bean) 생성을 위한 강력한 새 기능이 도입되었고, 광범위한 리팩토링을 통해 안정성과 성능이 향상되었으며, 여러 중요한 버그가 수정되었습니다. 내부 변경의 규모가 크므로 업그레이드 후 충분한 테스트를 권장합니다.
✨ 새로운 기능
FactoryBean의 세분화된 스코프 제어:FactoryBean인터페이스에isSingleton()메소드가 추가되었습니다. 이를 통해 팩토리가 생산하는 객체가 공유되는 싱글톤(기본값)일지, 아니면 요청마다 새로운 프로토타입 인스턴스일지를 세밀하게 제어할 수 있습니다.
🚀 개선 사항
- 빈(Bean) 생성 및 생명주기:
FactoryBean및 팩토리 메소드를 위한 빈 생성 내부 로직을 명확성과 견고성을 위해 리팩토링했습니다.- 더블 체킹 락(double-checked locking) 메커니즘을 사용하여 스레드에 안전한 싱글톤 생성을 구현했습니다.
- 스레드에 안전한 싱글톤 빈 생성을 검증하기 위한 동시성 테스트를 추가했습니다.
- 와일드카드 유틸리티:
- 와일드카드 매칭 엔진을 새로운
WildcardEngine으로 로직을 중앙 집중화하여 가독성과 유지보수성을 위해 대폭 리팩토링했습니다. - 안정성을 보장하기 위해 포괄적인 새 데이터 기반 테스트 스위트를 추가했습니다.
- 와일드카드 매칭 엔진을 새로운
- AsEL (Aspectran Expression Language):
- AsEL 평가 메커니즘을 토큰 파싱 및 아이템 평가 로직 개선을 포함하여 더 깔끔한 디자인과 확장성을 위해 리팩토링했습니다.
- 성능 및 스레드 안전성:
- 자료 구조와 반복을 최적화하여
AspectRegistry의 성능과 스레드 안전성을 개선했습니다. CoreServiceHolder에서ConcurrentHashMap을 사용하여 스레드 안전성을 강화했습니다.
- 자료 구조와 반복을 최적화하여
- 예외 처리:
- 어스펙트 어드바이스의 예외 처리가 예외 체인을 순회하도록 개선하여, 핸들러가 근본 원인 예외를 잡을 수 있도록 했습니다.
- 요청 처리:
- 웹 요청의 기본 문자 인코딩을 최신 웹 표준에 맞춰 UTF-8로 변경했습니다.
- 코드 품질 및 문서:
- 개발자 경험을 향상시키기 위해 여러 핵심 모듈에 걸쳐 예외 메시지와 Javadoc을 개선했습니다.
🐞 버그 수정
FactoryBean/Factory-Method생명주기: 팩토리 빈이 생산한 객체 대신 팩토리 빈 인스턴스 자체가 의존성으로 잘못 주입되던 치명적인 버그를 수정했습니다.- AsEL 런타임 평가: 런타임에 동적으로 파싱된 AsEL 토큰(예:
#{field:...})이 평가되지 않던 치명적인 버그를 수정했습니다. - 와일드카드 이스케이프: 와일드카드 파서에서 이스케이프 처리된 문자(예:
\*)가 리터럴로 올바르게 처리되지 않던 버그를 수정했습니다. - 요청 크기 제한:
WebRequestBodyParser에서 멀티바이트 인코딩을 사용할 경우 요청 크기 제한을 우회할 수 있었던 버그를 수정했습니다. - 파일 파라미터 처리:
FileParameter.getContentType()이 null을 반환할 수 있었던 문제를 수정했습니다. ItemRule속성 처리:ItemRule에서Properties값을 잘못 처리하던 버그를 수정했습니다.RedirectRule:getExcludeEmptyParameters()가 잘못된 값을 반환하던 버그를 수정했습니다.
Juho Jeong NEWS
Release