Using Providers

Provider 协议使你更方便的集成外部服务到你的应用中。 所有Vapor的官方包,像Fluent 使用provider系统来暴露他们的服务。

Providers 能做:

Register

一旦你添加了 Service-exposing SPM dependency 到你的项目里, 添加 provider 是很简单的事情了.

import Foo

try services.register(FooProvider())

通常在 configure.swift完成。

注意

你在Github上搜索 vapor-service 标签就可以搜索到一系列使用此方法来暴露Services的包。

Create

创建一个自定义的provider可以更好的管理你的代码。如果你在制作Vapor的第三方包,也可以创建一个provider。

这有一个类似于Logger的简单的provider例子。例子来自于 Services 章节。

public final class LoggerProvider: Provider {
    /// See `Provider`.
    public func register(_ services: inout Services) throws {
        services.register(PrintLogger.self)
        services.register(FileLogger.self)
    }

    /// See `Provider`.
    public func didBoot(_ container: Container) throws -> Future<Void> {
        let logger = try container.make(Logger.self)
        logger.log("Hello from LoggerProvider!")
        return .done(on: container)
    }
}

现在,当有人注册了LoggerProvider到它的Services结构里,它将会自动注册打印和文件日志功能。当容器启动时,成功的消息将会被打印出来,以验证provider已添加好了。

参阅 Provider 协议的API文档来获取更多资料。

results matching ""

    No results matching ""