개발/NestJS

의존성 주입이란?

Zaein 2023. 4. 10. 18:22

와 이거 간단한건데 왜 이해하기까지 오래걸렸는지 의문..

 

 

 

의존성 주입이란 객체간의 의존관계를 느슨하게 하기 위한 설계 패턴임

의존성을 최소화 하려고 하는것

(의존성 '주입'이라길래 의존성을 더 높이는것이라고 생각했었다;;)

 

의존성이 있을 때 다른 객체를 직접 생성해서 사용하지 않고

생성자를 통해 외부에서 객체를 생성하여 주입함

* 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가 해당 인자에 맞는 인스턴스를 생성해서 주입해줌!!