@Injectable()

发布于:2024-04-29 ⋅ 阅读:(67) ⋅ 点赞:(0)

当你在 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,而不必在每个地方都手动创建它的实例。