와 이거 간단한건데 왜 이해하기까지 오래걸렸는지 의문..
의존성 주입이란 객체간의 의존관계를 느슨하게 하기 위한 설계 패턴임
즉 의존성을 최소화 하려고 하는것
(의존성 '주입'이라길래 의존성을 더 높이는것이라고 생각했었다;;)
의존성이 있을 때 다른 객체를 직접 생성해서 사용하지 않고
생성자를 통해 외부에서 객체를 생성하여 주입함
* NestJS에서 간단하게 할 수 있음!
ex)
(NestJS 환경에서 의존성 주입하기)
AuthService 클래스 내부에서 UserService 클래스를 사용해야 할 때
import { Injectable } from '@nestjs/common';
import { UserService } from './user.service';
@Injectable()
export class AuthService {
constructor(private readonly userService: UserService) {}
async login(username: string, password: string) {
const user = await this.userService.findUser(username);
}
}
1. 먼저 './user.service'에서 @Injectable() 데코레이터로 UserService를 선언하고
(UserService를 provider로 사용하기 위해)
2. AuthService 클래스에도 @Injectable() 데코레이터를 사용해서 의존성 주입이 가능한 클래스임을 명시해줌
(위 코드)
3. AuthService클래스의 constructor(생성자 함수)에서 'private readonly userService: UserService'라고
주입받고 싶은 인자에 대해 선언하면, NestJS가 해당 인자에 맞는 인스턴스를 생성해서 주입해줌!!
'개발 > NestJS' 카테고리의 다른 글
의존성 (Dependency) 이란? (0) | 2023.04.10 |
---|---|
NestJS에서 @Controller 의 역할 (0) | 2023.04.10 |
NestJS에서 @UploadedFiles(), @Injectable()의 역할 (0) | 2023.04.05 |
NestJS에서 @Body(), @Query()의 역할 (0) | 2023.04.05 |
dto 와 entity의 차이점 (0) | 2023.04.05 |