-
[Nest.js] 4 - ProviderNest.js 2021. 9. 8. 15:41
Contents
1. Provider?
2. Dependency Injection
3. Service?
4. Create Service
1. Provider
- Many of the basic classes may be treated as Provider
-> Services, Repotories, Factories, Helpers, and so on.https://docs.nestjs.com/providers - Controllers should handle HTTP requests and responses.
- Provider should be assigned more complex tasks from Controller.
- Providers are plain JavaScript classes that are declared as providers in a module.
- Providers have a lifetime("Scope") synchronized with the application lifecycle.
-> ways to make provider lifetime request-scoped as well -> https://docs.nestjs.com/fundamentals/injection-scopes
2. Dependency Injection(DI)
- Main Idea is Dependency Injection(DI)
-> Objects can create various relationship with each other, and the function of
"Wiring up"("Connecting") instances of objects can largely be delegated to the Nest runtime system.- In Nest, based on TypeScript capabilities, it is easy to manage dependendies because they are resolved by Type.
- Nest will resolve BoardsService by creating and returning an instance of BoardsService
-> or, in the normal case of a singleton, returning the existing instance if it has already been requested elsewhere// board.controller.ts constructor(private boardsService: BoardsService){} // Constructor-based Injection
3. Service
- @Injectable() decorator attaches metadata,
which delares that a service is a class that can be managed by the Nest IoC Container- Service instance can be used in everywhere of application.
- Service may be used for validatiing data or item creation into database.
4. Create Service using CLI
1 . CLI
$ nest g service boards // // "boards" is the name of service, // create BoardsService in boards.service.ts or $ nest g service boards --no-spec // --no-spec optio : exclude unit-test file
2. Look for a "boards" folder
3. Created "boards.service.ts" in the folder
4. Imported and Registerd the controller in its module "boards.module.ts" automatically
'Nest.js' 카테고리의 다른 글
[Nest.js] 6 - DTO & PIPES (0) 2021.09.09 [Nest.js] 5 - TypeORM / MySql(MariaDB) (0) 2021.09.08 [Nest.js] 3 - Controller (0) 2021.09.08 [Nest.js] 2 - Module (0) 2021.09.07 [Nest.js] 1 - Basic Structure (0) 2021.09.07