• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

UseFilter 데코레이터에 인스턴스? 클래스?

23.02.19 19:26 작성 조회수 366

0

공식문서 힌트에서,

Prefer applying filters by using classes instead of instances when possible. It reduces memory usage since Nest can easily reuse instances of the same class across your entire module.

 

와 같이, 인스턴스 대신에 클래스를 사용하라고 나와있는데요,

클래스를 사용하는 것이

  1. UseFIlter(HttpExceptionFilter) 가 아니라,

  2. UseFIlter(new HttpExceptionFilter()) 이렇게 사용하는 건가요..?

 

공식문서에서 클래스를 사용하는 것이 권장된다고 나와 있고 클래스로 사용하는 것이 1번인줄 이해했는데, 그 문장 이후에도 2번 과 같이 쓰여서 헷갈려서 질문 올립니다!

 

 

답변 1

답변을 작성해보세요.

0

조교님의 프로필

조교

2023.02.22

안녕하세요:)

질문에 답변드립니다.

네, 맞습니다. 1번의 경우가 클래스, 2번의 경우가 인스턴스를 사용하는 경우인데요.

우선적으로, UseFilter(HttpExceptionFilter)를 선호하는 이유는 인스턴스화의 책임을 프레임워크에 넘겨줌과 동시에 nest js에서 전체 모듈에서 같은 클래스의 인스턴스를 재사용 가능하게 합니다. 이런 권장사항은 binding exception인 경우에 권장이 되어집니다. 즉, 메소드를 사용할 때 사용하거나, 혹은 controller 단계의 전체 부분, 혹은 전역적으로 사용 할수 있게 global 범위등에서 적용을 하는 게 권장되어지고 있습니다.

추가적인 질문이 있으시면, 답글 달아주세요.