export const metadata = {
  title: `${pageNumber} Module's Container`,
}

# {metadata.title}

In this chapter, you'll learn about the module's container and how to resolve resources in that container.

## Module's Container

Since modules are isolated, each module has a local container only used by the resources of that module.

So, resources in the module, such as services or loaders, can only resolve other resources registered in the module's container.

### List of Registered Resources

Find a list of resources or dependencies registered in a module's container in [this Learning Resources reference](!resoures!/medusa-container-resources).

---

## Resolve Resources

### Services

A service's constructor accepts as a first parameter an object used to resolve resources registered in the module's container.

For example:

```ts highlights={[["4"], ["10"]]}
import { Logger } from "@medusajs/medusa"

type InjectedDependencies = {
  logger: Logger
}

export default class HelloModuleService {
  protected logger_: Logger

  constructor({ logger }: InjectedDependencies) {
    this.logger_ = logger

    this.logger_.info("[HelloModuleService]: Hello World!")
  }

  // ...
}
```

### Loader

A loader function accepts as a parameter an object having the property `container`. Its value is the module's container used to resolve resources.

For example:

```ts highlights={[["9"]]}
import {
  LoaderOptions,
} from "@medusajs/framework/modules-sdk"
import { Logger } from "@medusajs/medusa"

export default async function helloWorldLoader({
  container,
}: LoaderOptions) {
  const logger: Logger = container.resolve("logger")

  logger.info("[helloWorldLoader]: Hello, World!")
}
```
