Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

회원 가입 시 스페이스 자동 생성 기능 리팩토링 #229

Conversation

dpdmstjs
Copy link
Contributor

@dpdmstjs dpdmstjs commented Nov 9, 2023

- 기본적으로 @async 메서드에서 발생하는 예외는 호출자에게 전파가 되지 않음.
- 이는 @async 어노테이션이 붙은 메서드가 별도의 스레드에서 실행되므로 메인 스레드에서 캐치를 할 수 없기 때문
- 비동기 메서드에서 발생하는 예외를 처리하는 클래스인 AsyncExceptionHandler를 구현
- AsyncUncaughtExceptionHandler 인터페이스를 구현하였으며, handleUncaughtException 메서드를 통해 예외를 처리
- 비동기 처리를 위한 설정 클래스인 AsyncConfig를 추가

- 'threadPoolTaskExecutor'라는 이름의 Executor 빈을 등록하는 메서드를 구현
- Executor는 비동기 작업을 처리할 때 사용될 스레드 풀을 설정하며, corePoolSize는 5, maxPoolSize는 30, queueCapacity는 50으로 설정

- AsyncConfigurerSupport의 getAsyncUncaughtExceptionHandler() 메서드를 오버라이드하여 비동기 메서드에서 발생하는 예외를 처리하는 클래스인 AsyncExceptionHandler를 반환하도록 함
- 유저의 개인 및 단체 스페이스를 초기화하고 저장하는 작업을 비동기적으로 처리
- Event를 사용해 이벤트로 사용하는 클래스라는 것을 명시적으로 표현
- 이벤트에 필요한 정보를 담고 있으며, 이벤트가 발생했을 때 해당 정보를 사용
- 트랜잭션이 성공할 때만 이벤트 핸들러를 실행되도록 TransactionalEventListener 사용
- 스프링 트랜잭션 성공에 따라 이벤트 핸들러 실행되도록 변경
@dpdmstjs dpdmstjs added the 🔨 Refactor 코드 리팩토링 label Nov 9, 2023
@dpdmstjs dpdmstjs self-assigned this Nov 9, 2023
@YangSooHyun0 YangSooHyun0 merged commit 1b6a5e2 into Fastcampus-Final-Team3:refactoring Nov 12, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🔨 Refactor 코드 리팩토링
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants