# nestjs 介紹與實作 - day 4 - nestjs Provider ## 目標 1. 介紹 nestjs provider 作用 2. 介紹 Service 與 provider 關係 ## nestjs provider 作用 在 [nestjs 介紹與實作 - day 3](/bcskddysQxqRAzOaZ4zhOg) 有提到 在 nestjs Module 中要使用 Dependency Injection 時 需要把要注入的物件提供在 @Module 裝飾子中的 providers 參數 語法如下: app.module.ts ```typescript= import { Module } from '@nestjs/common'; import { AppService } from './app.service'; @Module({ imports: [], controllers: [], providers: [AppService], exports: [] }) export class AppModule {} ``` 而在要被 provide 的物件類別宣告中,需要加入 @Injectable 這個標注 語法如下: app.service.ts ```typescript= import { Injectable } from '@nestjs/common'; @Injectable() export class AppService { getHello(): string { return 'Hello World!'; } } ``` ## Service 與 provider 的關係 在 nest 程式中 , 通常會把要分享的共用實作邏輯 封裝在裝飾著 @Injectable 的物件類別中 而這類別通常會被歸類為 Service Service 可以是來自第三方的套件,或是自行開發的邏輯 透過 provider 屬性可以讓 Service 注入到需要使用的地方