• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

Dependency Injection에 관해

21.10.28 21:08 작성 조회수 265

0

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

답변 2

·

답변을 작성해보세요.

1

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

front님의 프로필

front

질문자

2021.10.31

답변 감사합니다!!

0

김수현님의 프로필

김수현

2023.07.02

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 파일에서도 똑같이 해당 데코레이터 주석처리하고 진행하였을때도 정상처리 됩니다.

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