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

PR :: Exception 관련 필터를 SecurityFilterChain에서 분리 #184

Conversation

Daybreak312
Copy link
Member

@Daybreak312 Daybreak312 commented Mar 22, 2024

어떤 종류의 PR 인가요?

/kind 리펙토링
/kind 기능

이 PR이 무슨 일을 하나요? / 필요한 이유가 뭔가요?

이전에 생성한 ExceptionConvertFilter, ErrorLogResponseFilter를 원래는 ApplicationFilterChain에 등록해 SecurityFilterChain과 독립되어야 했으나, 구현의 어려움으로 인해 임시적으로 SecurityFilterChain에 등록했습니다.
논리적으로 문제는 없으나, 이는 개발자가 보기에는 분리되어야 할, 서로 관계 없는 책임이 결합되어있는 형태로 보여, 다소 거슬리는, 오리알과 같은 신세였습니다.

그리고 지금, Exception과 관련한 Filter들을 드디어 분리해내어 ApplicationFilterChain에서 실행되도록 만들었습니다.

또한 이를 뒤따라 SecurityFilterChain, 그리고 FilterChainProxy로부터 영감을 받아 추상화된 모듈인 GlobalFilterChain, GlobalFilterChainProxy, ChainedFilterChain, ChainedFilterChainProxy를 제작하게 되었습니다.

이 덕분에 더욱 응집되어 있고 더욱 느슨하게 결합되도록 유지할 수 있게 하였습니다.

리뷰어를 위한 참고사항:

아래는 각 모듈의 간략한 설명입니다.

- GlobalFilterChain
  <<Interface>>FilterChain를 구현하는 Interface입니다.
  MaeumGaGym 백엔드 애플리케이션 내부에서 전역적으로 사용하는, 가장 추상화된 FilterChain입니다.
  FilterChain의 구현을 위한 메소드가 두 가지 더 추가되었습니다.
- GlobalFilterChainProxy
  FilterChain을 내부에 갖고 있는 abstract class로,
  GlobalFilterChain을 또 다른 FilterChain 중에 삽입하기 위한 FilterChain의 Proxy이자, 일종의 Filter입니다.
- ChainedFilterChain
  FilterChain 중에서도, 논리적으로 FilterChain 밖의 Filter를 FilterChain 안의 Filter가 호출해야하는 경우가 있습니다. 이를 위해 만들어진 GlobalFilterChain의 하위 ㅇ타입 abstract class입니다.
  자세한 설명은 코드의 KDocs를 참고해주세요.
- ChainedFilterChainProxy
  ChainedFilterChain을 대리하는 Filter입니다. 자세한 설명은 코드의 KDocs를 참고해주세요.


@Daybreak312 Daybreak312 requested a review from HyunSu1768 as a code owner March 22, 2024 03:33
@Daybreak312 Daybreak312 self-assigned this Mar 22, 2024
@maeumgagym-ci-robot-app maeumgagym-ci-robot-app bot added kind/리펙토링 refactoring code kind/기능 functional development size/L labels Mar 22, 2024
@Daybreak312
Copy link
Member Author

/hold

@Daybreak312
Copy link
Member Author

/unhold

1 similar comment
@Daybreak312
Copy link
Member Author

/unhold

@Daybreak312
Copy link
Member Author

/tide

1 similar comment
@gurdl0525
Copy link
Member

/tide

@gurdl0525
Copy link
Member

/lgtm

@HyunSu1768 HyunSu1768 merged commit 8cd6d9a into develop Mar 24, 2024
2 checks passed
@HyunSu1768 HyunSu1768 deleted the BAC-520-Exception-관련--필터를-SecurityFilterChain에서-분리 branch March 24, 2024 07:58
@HyunSu1768 HyunSu1768 restored the BAC-520-Exception-관련--필터를-SecurityFilterChain에서-분리 branch March 24, 2024 07:58
@HyunSu1768 HyunSu1768 deleted the BAC-520-Exception-관련--필터를-SecurityFilterChain에서-분리 branch March 24, 2024 07:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind/리펙토링 refactoring code kind/기능 functional development size/L
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants