Circular dependency
Circular dependency
μν μ’ μμ±μ μλ₯Ό λ€μ΄ ν΄λμ€ Aμ ν΄λμ€ Bκ° νμνκ³ ν΄λμ€ Bμ ν΄λμ€ Aκ° νμν λ λ°μν©λλ€. Nestλ 곡κΈμμ λͺ¨λκ°μ μν μ’ μμ±μ λ§λ€ μ μμ§λ§ κ°λ₯ν λλ§λ€ νΌνλ κ²μ΄ μ’μ΅λλ€. λλλ‘ μ΄λ° μ’ λ₯μ κ΄κ³λ₯Ό νΌνλ κ²μ΄ λ§€μ° μ΄λ ΅κΈ° λλ¬Έμ μ°λ¦¬λμ΄ λ¬Έμ λ₯Ό ν΄κ²°ν μ μλ λ°©λ²μ μ 곡νμ΅λλ€.
Forward reference
μ λ¬ μ°Έμ‘°λ μ§κΈκΉμ§ μ μλμ§ μμ μ°Έμ‘°λ₯Ό Nestκ° μ°Έμ‘°ν μ μλλ‘ ν©λλ€. CatsService
μ CommonService
κ° μλ‘ μμ‘΄νλ κ²½μ°, κ΄κ³μ μμͺ½ λͺ¨λ @Inject()
μ forwardRef()
μ νΈλ¦¬ν°λ₯Ό μ¬μ©ν΄μΌ ν©λλ€. μ¬μ©ν μ μμ΅λλ€. λ€μ μ€λν«μ 보μ.
@@filename(cats.service)
@Injectable()
export class CatsService {
constructor(
@Inject(forwardRef(() => CommonService))
private readonly commonService: CommonService,
) {}
}
@@switch
@Injectable()
@Dependencies(forwardRef(() => CommonService))
export class CatsService {
constructor(commonService) {
this.commonService = commonService;
}
}
info ννΈ
forwardRef()
ν¨μλ@nestjs/common
ν¨ν€μ§μμ κ°μ Έμ΅λλ€.
κ΄κ³μ 첫 λ²μ§Έ μ¬μ΄λκ° μμ΅λλ€. μ΄μ CommonService
λ‘ λκ°μ΄ ν΄λ΄
μλ€ :
@@filename(common.service)
@Injectable()
export class CommonService {
constructor(
@Inject(forwardRef(() => CatsService))
private readonly catsService: CatsService,
) {}
}
@@switch
@Injectable()
@Dependencies(forwardRef(() => CatsService))
export class CommonService {
constructor(catsService) {
this.catsService = catsService;
}
}
warning κ²½κ³ μ΄λ€ μμ±μκ° λ¨Όμ νΈμΆλλμ§ λ³΄μ₯ ν μ μμ΅λλ€.
λͺ¨λκ° μν μ’
μμ±μ μμ±νλ €λ©΄ λ λͺ¨λ μ°κ²°μμ λμΌν forwardRef()
μ νΈλ¦¬ν°λ₯Ό μ¬μ©ν΄μΌ ν©λλ€.
@@filename(common.module)
@Module({
imports: [forwardRef(() => CatsModule)],
})
export class CommonModule {}
Module reference
Nestλ λͺ¨λ μ»΄ν¬λνΈμ κ°λ¨ν μ£Όμ
ν μμλ ModuleRef
ν΄λμ€λ₯Ό μ 곡ν©λλ€.
@@filename(cats.service)
@Injectable()
export class CatsService implements OnModuleInit {
private service: Service;
constructor(private readonly moduleRef: ModuleRef) {}
onModuleInit() {
this.service = this.moduleRef.get(Service);
}
}
@@switch
@Injectable()
@Dependencies(ModuleRef)
export class CatsService {
constructor(moduleRef) {
this.moduleRef = moduleRef;
}
onModuleInit() {
this.service = this.moduleRef.get(Service);
}
}
info ννΈ
ModuleRef
ν΄λμ€λ@nestjs/core
ν¨ν€μ§μμ κ°μ Έμ΅λλ€.
λͺ¨λ μ°Έμ‘°μλ νμ¬ λͺ¨λμμ μ¬μ© κ°λ₯ν 곡κΈμλ₯Ό κ²μν μμλ get() λ©μλκ° μμ΅λλ€. λν μ격νμ§ μμ λͺ¨λλ‘ μ ννμ¬ μ 체 μμ© νλ‘κ·Έλ¨μ€μμ κΈ°μ‘΄ 곡κΈμλ₯Ό μ νν μ μμ΅λλ€.
this.moduleRef.get(Service, { strict: false });
Last updated
Was this helpful?