인프런 커뮤니티 질문&답변

front님의 프로필 이미지
front

작성한 질문수

따라하며 배우는 NestJS

인증 기능 구현을 위한 준비

Dependency Injection에 관해

작성

·

378

0

안녕하세요 선생님, 항상 좋은 강의 감사드립니다.
 
DI 관련해서 궁금한 점이 생겨 질문드립니다.
Controller에서 Service 클래스를 DI 받을 때는 별도의 데코레이션 없이 DI를 받았는데,
service 계층에서 repository를 DI 받을 때는 왜 @InjectRepository가 필요할까요?
 
개인적으로 생각해보기로는, 우리가 직접 만든 Service 클래스는 Nest IOC container에서 관리되지만, Repository 클래스는 TypeORM 모듈에 의해 DI가 관리되기 때문일 수도 있겠다는 생각을 해봤습니다.

답변 2

1

John Ahn님의 프로필 이미지
John Ahn
지식공유자

안녕하세요 !!! 
이부분은 공식 문서에 찾아봐도 정확히 명시해놓은 부분이 없어서 확답은 드리기가 애매하지만 
mdiu님이 말씀해주신것처럼 다른 모듈에서 관리하기에  다른 방법으로 Dependency Injection을 가능하게 하는게 아닌가 싶습니다 !! 정확한 답변 못드려서 죄송합니다 ㅠㅠ !!! 

front님의 프로필 이미지
front
질문자

답변 감사합니다!!

0

23.07.02

"dependencies": {
    "@nestjs/common": "^9.0.0",
    "@nestjs/core": "^9.0.0",
    "@nestjs/platform-express": "^9.0.0",
    "@nestjs/typeorm": "8.0",
    "class-transformer": "^0.5.1",
    "class-validator": "^0.14.0",
    "pg": "^8.11.1",
    "reflect-metadata": "^0.1.13",
    "rxjs": "^7.2.0",
    "typeorm": "^0.2.45",
    "uuid": "^9.0.0"
  },
  "devDependencies": {
    "@nestjs/cli": "^9.0.0",
    "@nestjs/schematics": "^9.0.0",
    "@nestjs/testing": "^9.0.0",
    "@types/express": "^4.17.13",
    "@types/jest": "29.5.1",
    "@types/node": "18.16.12",
    "@types/supertest": "^2.0.11",
    "@typescript-eslint/eslint-plugin": "^5.0.0",
    "@typescript-eslint/parser": "^5.0.0",
    "eslint": "^8.0.1",
    "eslint-config-prettier": "^8.3.0",
    "eslint-plugin-prettier": "^4.0.0",
    "jest": "29.5.0",
    "prettier": "^2.3.2",
    "source-map-support": "^0.5.20",
    "supertest": "^6.1.3",
    "ts-jest": "29.1.0",
    "ts-loader": "^9.2.3",
    "ts-node": "^10.0.0",
    "tsconfig-paths": "4.2.0",
    "typescript": "^5.0.0"
  },

23.07.02 현재 버전에선 @InjectRepository 데코레이터를 주석처리 하고 실행하여도 에러없이 데이터조작이 가능하네요.

boards.service.ts 파일에서도 똑같이 해당 데코레이터 주석처리하고 진행하였을때도 정상처리 됩니다.

이유는 무엇인지 정확하게 모르겠지만 아마 라이브러리 버전에따라 달라지는것같네요.

front님의 프로필 이미지
front

작성한 질문수

질문하기