# Getting Started - Vapor Docs

Skip to content


# Getting Started with Service

Service (vapor/service) is a dependency injection (inversion of control) framework. It allows you to register, configure, and create your application's dependencies in a maintainable way.

    /// register a service during boot
    services.register(PrintLogger.self, as: Logger.self)

    /// you can then create that service later
    let logger = try someContainer.make(Logger.self)
    print(logger is PrintLogger) // true

You can read more about dependency injection on Wikipedia. Also be sure to check out the Getting Started → Services guide.

## Vapor

This package is included with Vapor and exported by default. You will have access to all `Service` APIs when you import `Vapor`.

    import Vapor

## Standalone

The Service package is lightweight, pure-Swift, and has very few dependencies. This means it can be used as a dependency injection framework for any Swift project—even one not using Vapor.

To include it in your package, add the following to your `Package.swift` file.

    // swift-tools-version:4.0
    import PackageDescription

    let package = Package(
        name: "Project",
        dependencies: [
            ...
            .package(url: "https://github.com/vapor/service.git", from: "1.0.0"),
        ],
        targets: [
          .target(name: "Project", dependencies: ["Service", ... ])
        ]
    )

Use `import Service` to access the APIs.

Warning

Some of this guide may contain Vapor-specific APIs, however most of it should be applicable to the Services package in general. Visit the API Docs for Service-specific API info.