인프런 커뮤니티 질문&답변

Kyeongtii님의 프로필 이미지

작성한 질문수

탄탄한 백엔드 NestJS, 기초부터 심화까지

의존성 주입에 대한 질문입니다.

해결된 질문

작성

·

128

1

안녕하세요. 공식문서를 보며 공부하던중에 interceptor부분에서

@useInterceptor(SuccessInterceptor)와 @useInterceptor(new SuccessInterceptor())의 차이에 대해 의문이 생겨 질문남깁니다.

동작에서는 똑같이 동작했는데 본질적으로 둘의 차이가 무엇인지 궁금합니다. 혹시 다른 차이점은 없는지 궁금합니다.

감사합니다.

답변 1

1

안녕하세요, Kyeongtii님.
Kyeongtii님의 질문에 답변 드립니다.

공식문서를 보면서 따라하고 계시다고 하셔서, 답변을 준비하며 공식문서를 참고했습니다. 공식문서에 적힌 내용은 아래와 같습니다.

Note that we passed the LoggingInterceptor type (instead of an instance), leaving responsibility for instantiation to the framework and enabling dependency injection. As with pipes, guards, and exception filters, we can also pass an in-place instance:

 

공식문서에서 @useInterceptor(SuccessInterceptor)와 @useInterceptor(new SuccessInterceptor())를 모두 사용하여서 헷갈리셨을 것 같습니다. 위에 적힌 내용을 읽어보면, instance[new SuccessInterceptor()] 대신 type[SuccessInterceptor]를 넘겨주어도 되며, 이를 인스턴스화 하여서 사용하는 것은 프레임워크에 맡기면 된다고 작성되어 있습니다. 즉, instance 대신 type으로 넘겨주었을 때는 프레임워크 내부에서 이를 인스턴스화 하여 사용하는 것으로 이해를 하시면 될 것 같습니다.

답변에 대해 더 궁금하신 사항이 있으시다면, 새로운 질문글로 작성해주시면 답변해 드리도록 하겠습니다.
감사합니다 🦦