일반적인 인스턴스화
DI
IoC
IoC and DI
Provider
개념이 나오는데, 말 그대로 제공자주입되는 인스턴스들
을 Provider
라고 함export class PostsController {
// 어디서 주입이 되는 걸까?
constructor(private readonly postsService: PostService) {}
.
.
.
}
@Module({
// 인스턴스를 생성할 Class를 넣기
controllers: [PostsController], // 컨트롤러를 사용할 것이다!
providers: [PostsService] // PostsController에 필요한 Service를 넣는 것, 등록을 해야 Nest.js가 주입해준다
})
export class PostsModule {}
각 모듈의 module.ts
에 등록을 해야 NestJS가 IoC 컨테이너에 인스턴스들을 띄운다. 그리고 DI를 하는 것.
또한 service단에서는 @Injectable
에 붙어있어야한다. 말 그래도 해당 서비스 클래스는 Provider로 주입할 수있다
라는 의미
결론 : 반드시 Module에 작성해서 주입 + @Injectabe로 주입가능하게 만들기
그럼 각각의 PostModule 등등... 이런 것들은 어떻게 관리??
@Module({
imports: [PostsModule], // 다른 Module 불러오기
controllers: [AppController],
providers: [AppService]
})
export class AppModule {}
어떻게 AppModule을 Nest.js는 불러올까?
async function bootstrap() {
const app = await Nestfactory.create(AppModule); // 여기
await app.listen(3000);
}
bootstrap();