If tutorials available on this website are helpful for you, please whitelist this website in your ad blocker😭 or Donate to help us ❤️ pay for the web hosting to keep the website running.
NestJS providers ऐसे classes
या objects
होते हैं जो किसी specific functionality या service को provide करते हैं। यह classes NestJS के dependency injection (DI
) system का essential part होते हैं।
इन्हे controllers या other components में inject
किया जाता है ताकि application के logical parts को separate और modular बनाया जा सके।
इसका मतलब यह है कि providers वो components होते हैं जो services को encapsulate करते हैं और application के different parts में reuse hone लायक बनाते हैं।
●●●
Providers को define करना NestJS में काफी simple है। यह usually एक class होती है जिसे हम @Injectable()
decorator के साथ mark करते हैं।
Example के लिए, एक basic service को define करते हैं जो एक string return करेगा।
import { Injectable } from '@nestjs/common';
@Injectable()
export class AppService {
getHello(): string {
return 'Hello World!';
}
}
@Injectable()
decorator : यह बताता है कि यह class एक provider है और DI system के through inject हो सकता है।
AppService
class : यह service एक method getHello()
को expose कर रही है जो एक string return करता है।
●●●
NestJS में, controllers को specific functionality perform करने के लिए services कि need होती है, और यह services providers के through inject कि जाती हैं , यह DI
का concept है।
Example के लिए, हम AppService
को एक controller में inject करते हैं।
import { Controller, Get } from '@nestjs/common';
import { AppService } from './app.service';
@Controller()
export class AppController {
constructor(private readonly appService: AppService) {}
@Get()
getHello(): string {
return this.appService.getHello();
}
}
AppService को inject करना : constructor(private readonly appService: AppService)
के through हम service को inject कर रहे हैं। NestJS automatically service को inject करेगा।
getHello() : यह controller method AppService
के method को call करता है और client को response देता है।
इस तरह से providers को inject करके, हम controllers के logic को clean और maintainable रख सकते हैं।
●●●
Dependency Injection एक ऐसा design pattern है जो components के बीच के dependencies को inject करता है, instead of directly creating new instances. यह pattern application को ज़्यादा modular और testable बनाता है।
NestJS में DI
system automatically providers को manage करता है। जब हम कोई provider को inject करते हैं (जैसे AppService को AppController में), तो NestJS खुद उस provider का instance
create करता है और inject करता है।
Code Reusability : एक ही service को multiple controllers या components में reuse किया जा सकता है।
Testing Friendly : आप services को easily mock या replace कर सकते हैं unit testing के दौरान।
Loose Coupling : Dependencies को loosely coupled रखने से application का structure modular ban जाता है।
●●●
Providers को NestJS के modules के अंदर register करना होता है ताकि उनका instance create किया जा सके और वो inject
हो सकें।
Example के लिए, AppService
को AppModule
में register करते हैं।
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
@Module({
imports: [],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
providers: [AppService]
: इस array में हम सारे providers को define करते हैं जो इस module के अंदर available होंगे।
जब हम AppModule
को bootstrap करते हैं, NestJS automatically AppService
का instance create करता है और उससे inject करता है जहां भी need हो।
●●●
कभी-कभी हमें default providers के अलावा custom providers कि need होती है। Custom providers तब useful होते हैं जब हमें कोई specific configuration या factory logic implement करना हो।
एक example देखते हैं , जिसमे एक custom provider को define किया गया है।
const customProvider = {
provide: 'CUSTOM_SERVICE',
useFactory: () => {
return new CustomService();
},
};
आप फिर CUSTOM_SERVICE
को किसी भी component में inject कर सकते हैं।
provide : यह property specify करती है कि हमें इस service को किस नाम से inject करना है।
useFactory : इससे हम एक function define करते हैं जो हमें service का instance return करेगा।
फिर इस custom provider को module में इस तरह से register कर सकते हैं -
@Module({
providers: [customProvider],
})
export class CustomModule {}
●●●
NestJS में providers का use हर जगह होता है , यह कुछ common use cases हैं जहाँ providers काम आते हैं।
Service Classes : Application का business logic handle करते हैं।
Repositories : Database operations को encapsulate करते हैं।
Third-party Libraries : अगर कोई external library को integrate कर रहे हैं, तो उसको एक provider के through manage कर सकते हैं।
Factories : Complex objects create करने के लिए factories को as providers use किया जा सकता है।
Single Responsibility Principle (SRP) : हर provider का एक specific काम होना चाहिए। अगर एक provider काफी सारी चीज़ें handle कर रहा है, तो उससे divide करना best practice होता है।
Modularity : Providers को modules में logically divide करना चाहिए. जैसे UserModule में UserService, ProductModule में ProductService.
Avoid Circular Dependencies : Providers में circular dependencies से बचा जाना चाहिए, जिससे application crash होने का risk होता है।
Testing : Providers को mock या stub करके test करना काफी आसान होता है। हमेशा ensure करें कि आपके providers easily testable हूँ।
●●●
NestJS providers आपके application के core components हैं जो सारी functionality को encapsulate करते हैं। यह DI
system के साथ काम करके आपके components को loosely coupled और ज़्यादा modular बनाते हैं।
यह आपको code को better structure करने, test करने, और maintain करने में help करते हैं।
Providers NestJS architecture का core part हैं।
यह services, repositories, और other components को manage करते हैं।
Dependency Injection के through हम easily providers को inject कर सकते हैं।
Providers को modules के अंदर register करना जरूरी होता है।