패스트캠퍼스 환급챌린지 13일차 : 코드팩토리의 백엔드 아카데미 : 한 번에 끝내는 NestJS 패키지 - 기초부터 MSA까지 강의 후기
***본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
DependencyInjection &
Inversion of Control
일반 인스턴스화
클래스A와 클래스B가 있다.
클래스A가 클래스B의 기능을 사용을 해야한다.
class A {
const b = B();
}
class B {
}
이렇게 하면 문제점.
1.매번 인스턴화를 직접 해야한다.
2.다른 클래스들도 필요하게 되면, 매번 다른 인스턴스의 클래스B를 사용을 하게 된다. 그 부분에서 버그가 발생할 수 있다. 다 다른 인스턴스여서
이러 이유로DependencyInjection을 한다.
class A {
constructor(instance: B)
}
class B {
}
Inversion of Control의 하나인 DependencyInjection
내가 직접 클래스를 컨트롤 하지 않고 컴퓨터가 알아서 컨트롤 해준다
nest js의 자체에서 IOC 컨테이너가 있다. 이걸 이용하면, 알아서 클래스B를 인스턴스화해서 클래스A,C 등에 넣어준다.
프로바이더에 모듈을 넣어주면 , 생성도 자동으로 해주고 주입도 자동으로 한다.
이렇게 하면 내가 전혀 신경 쓸 필요가 없어져서 코딩하는 게 굉장히 간결해지고 간단해지고 직관적여진다.

src폴더의 app.service.ts 파일열기
@Injectable()은 앱 서비스를 dependencyInjection 으로 활용할 수 있도록 ioc컨테이너에서 관리를 해줘" 라는 뜻이다.
app.컨트롤러 파일의
appservice가 인젝트가 되어있다. app컨트롤러가 생성이 될 때 무조건 의존성으로 이렇게 주입을 해야한다.
이걸 주입해주는 코드는 어디서 작성을 할까?
코드를 작성할 필요없다. ioc컨테이너에서 알아서 해준다.




#패스트캠퍼스 #직장인자기계발 #직장인공부 #환급챌린지 #패스트캠퍼스후기 #오공완
https://bit.ly/4hTSJNB