Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 구글검색광고
- 플러터
- git
- 개인앱
- 라인광고플랫폼
- 스케치퀴즈
- 카카오톡공유하기
- 사이드프로젝트
- 캐치마인드
- nodejs
- git pull
- Kotlin
- funnel
- 스케치데브
- 페이스북광고
- nestjs
- 펀널
- Redis
- submodules
- 토이프로젝트
- 코딩공부
- 카카오톡
- 영원회귀
- 개발자를_위한 #PPT팁
- 광고플랫폼
- 메모장앱
- 블랙서바이벌
- 룩백
- 부업
- 이터널리턴
Archives
- Today
- Total
가을기 Workspace
NestJS provider 본문
본 포스팅은 사이드프로젝트 스케치데브를 사용하면서 공부한 nestjs를 정리한 글입니다.
스케치데브가 궁금하시다면: https://sketchdev.kr
provider: 비즈니스 로직이 담겨있는 services, repositories, factories, helpers 들을 통칭.
Spring이라면 bean의 개념.
참고: provider는 모두 singleton이다. node.js는 싱글스레드 기반이므로 동시성 이슈에서 자유롭다.
서비스
import { Injectable } from '@nestjs/common';
import { Cat } from './interfaces/cat.interface';
@Injectable()
export class CatsService {
private readonly cats: Cat[] = [];
create(cat: Cat) {
this.cats.push(cat);
}
findAll(): Cat[] {
return this.cats;
}
}
Injectable이 중요하다.
이게 있어야 Nest IoC가 관리할 수 있게 된다.
Dependency Injection
constructor(private catsService: CatsService) {}
constructor parameter로 붙이기만 하면 해결
Optional Parameter
import { Injectable, Optional, Inject } from '@nestjs/common';
@Injectable()
export class HttpService<T> {
constructor(@Optional() @Inject('HTTP_OPTIONS') private httpClient: T) {}
}
개발자의 시간은 소중하다. 우리는 개발자다.
그러니 바빠서, 혹은 귀찮아서 provider 설정을 안할 수도 있다.
그때 Optional로 default provider를 줄 수도 있다.
Provider 등록
import { Module } from '@nestjs/common';
import { CatsController } from './cats/cats.controller';
import { CatsService } from './cats/cats.service';
@Module({
controllers: [CatsController],
providers: [CatsService],
})
export class AppModule {}
Spring과는 다르게 Nest는 Component Scan을 하지 않는다.
속도와 가벼움을 위해서라고 추측한다.
이렇게 해서 완성되는 디렉터리 구조
대략 위와 같다.
cats라는 도메인 아래 controller, service, dto, interface 등.
글 읽어주셔서 감사합니다.
'개발 > nodejs' 카테고리의 다른 글
Typescript로 object 초기화 (0) | 2021.06.16 |
---|---|
NestJS mongodb module (0) | 2021.05.09 |
NestJS module (0) | 2021.05.09 |
NestJS controller (0) | 2021.05.09 |
NestJS 시작하기 (0) | 2021.05.09 |
Comments