BackEnd/Nest.js
[Nest.js] ForRoot vs ForFeature
_PNO
2023. 9. 21. 22:56
게시글을 읽으시기 전에,
제 블로그의 정보가 정확하지 않을 수도 있다는 점 명심해 주세요.
혹시 틀린 부분을 발견하신다면 댓글로 알려주시면
적절한 조치를 취하도록 하겠습니다.
시작하며
오늘 Nest.js로 코딩을 하고있었는데 문득 이런 궁금증이 들었습니다.
imports: [
TypeOrmModule.forFeature([User]),
JwtModule...(후략)
],
imports: [
TypeOrmModule.forRootAsync({
imports: [ConfigModule],
useFactory: async (config: ConfigService) => ({
type: 'mysql',
port: config.get<number>('DB_PORT'),
...(생략)
timezone: config.get<string>('TZ'),
}),
inject: [ConfigService],
}),
],
"잠깐 module을 import해올때 forRoot도 쓰고.. ForFeature도 쓰네? 차이점이 뭐야 이거?"
그래서 즉흥으로 공부해왔습니다. 바로 시작합시다.
ForRoot
동적 모듈을 하나 구성하고 그 구성으로 이루어진 모듈들을 여러 위치에서 재사용한다는 메서드입니다. 보통 ForRoot는 주로 root(app.module.ts) 사용된다는것을 봤을때. 즉, 프로젝트 전체적인 세팅을 담당한다는 것을 알 수 있습니다. 그러므로, 프로젝트의 전체적인 세팅을 하는 configModule이나 mongoDB같은 module에 사용하는것이 적합합니다.
ForFeature
동적 모듈을 하나 구성하고 그 구성으로 이루어진 모듈들을 특정 모듈 안에서만 재사용하는것이 일반적입니다. 이러한 특성 때문에 주로 한 모듈당 그 모듈의 메인파일(user.module.ts)에서 초기화합니다. 이러한 특성 때문에 Entity를 설정하는 TypeORM같은 모듈의 초기화를 담당하는것이 바람직 합니다.
마무리
갑자기 궁금해서 찾아보고 정리해봤습니다. 혹시 잘못된점이 있다면 언제든지 이야기 해주십쇼.
참고 자료 출처