@loopback/docs
Version:
Documentation files rendered at [https://loopback.io](https://loopback.io)
74 lines (54 loc) • 1.88 kB
Markdown
---
lang: en
title: 'API docs: core.application.service'
keywords: LoopBack 4.0, LoopBack 4, Node.js, TypeScript, OpenAPI
sidebar: lb4_sidebar
editurl: https://github.com/loopbackio/loopback-next/tree/master/packages/core
permalink: /doc/en/lb4/apidocs.core.application.service.html
---
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) > [@loopback/core](./core.md) > [Application](./core.application.md) > [service](./core.application.service.md)
## Application.service() method
Add a service to this application.
<b>Signature:</b>
```typescript
service<S>(cls: ServiceOrProviderClass<S>, nameOrOptions?: string | ServiceOptions): Binding<S>;
```
## Parameters
| Parameter | Type | Description |
| --- | --- | --- |
| cls | [ServiceOrProviderClass](./core.serviceorproviderclass.md)<!-- --><S> | The service or provider class |
| nameOrOptions | string \| [ServiceOptions](./core.serviceoptions.md) | |
<b>Returns:</b>
[Binding](./context.binding.md)<!-- --><S>
## Example
```ts
// Define a class to be bound via ctx.toClass()
@injectable({scope: BindingScope.SINGLETON})
export class LogService {
log(msg: string) {
console.log(msg);
}
}
// Define a class to be bound via ctx.toProvider()
import {v4 as uuidv4} from 'uuid';
export class UuidProvider implements Provider<string> {
value() {
return uuidv4();
}
}
// Register the local services
app.service(LogService);
app.service(UuidProvider, 'uuid');
export class MyController {
constructor(
@inject('services.uuid') private uuid: string,
@inject('services.LogService') private log: LogService,
) {
}
greet(name: string) {
this.log(`Greet request ${this.uuid} received: ${name}`);
return `${this.uuid}: ${name}`;
}
}
```