当你在 Nest.js 中使用 @Injectable()
装饰器标记一个类时,它告诉 Nest.js 这个类是一个可以被注入到其他地方使用的服务。这意味着你可以在你的应用中的不同地方重复使用这个服务,而不必每次都手动创建它的实例。
比如说,假设你有一个服务叫做 LoggerService
,它用于记录日志。你可以在你的应用的任何地方使用 LoggerService
,而不必每次都创建一个新的 LoggerService
实例。这样做的好处是,你可以在整个应用中使用同一个日志服务,并且可以更轻松地管理它。
简而言之,@Injectable()
的作用就是让你的服务变得可注入、可重用,让你的代码更加简洁和可维护。
好的,以下是一个简单的代码示例,演示了如何在 Nest.js 中使用 @Injectable()
装饰器定义一个服务,并在另一个组件中注入和使用这个服务:
import { Injectable } from '@nestjs/common';
@Injectable() // 使用 @Injectable() 装饰器标记这个类为可注入的服务
export class LoggerService {
log(message: string) {
console.log(message);
}
}
在这个示例中,我们定义了一个名为 LoggerService
的服务,并使用 @Injectable()
装饰器标记它为可注入的服务。这意味着我们可以在应用的其他地方注入和使用这个服务。
接下来,让我们在另一个组件中注入并使用这个服务:
import { Controller, Get } from '@nestjs/common';
import { LoggerService } from './logger.service'; // 引入 LoggerService 服务
@Controller('example')
export class ExampleController {
constructor(private readonly loggerService: LoggerService) {} // 在构造函数中注入 LoggerService
@Get()
getExample(): string {
this.loggerService.log('Request received'); // 使用 LoggerService 记录日志
return 'Example response';
}
}
在这个示例中,我们创建了一个名为 ExampleController
的控制器,并在它的构造函数中注入了 LoggerService
。然后,在 getExample
方法中,我们使用 LoggerService
记录了一个简单的日志信息。这样,我们就可以在整个应用中重复使用 LoggerService
,而不必在每个地方都手动创建它的实例。