服務提供者
概述
內核啟動操作中最重要的事情是加載 ServiceProvider。 應用程序下的所有 ServiceProvider 都在 config/app.go 的 providers 陣列中配置。
首先,內核會調用所有服務提供者的 Register 方法。 在所有服務提供者註冊後,內核將再次調用所有 ServiceProvider 的 Boot 方法。
ServiceProvider 是 Goravel 生命週期的關鍵。 它們使框架能夠包含各種組件,例如路由、數據庫、隊列、快取等。
您也可以自定義自己的提供者,可以存放在 app/providers 下並在 config/app.go 的 providers 陣列中註冊。
框架默認有一個空白的服務提供者 app/providers/app_service_provider.go,您可以在這裡實現簡單的啟動邏輯。 在大型項目中,您可以選擇創建新的服務提供者以進行更精確的控制。
ServiceProvider 提供可選方法 Relationship() binding.Relationship,用來聲明當前 ServicerProvider 的依賴關係,設定了該方法的 ServiceProvider 將不依賴於註冊順序,而未設定的 ServiceProvider 將最後註冊,例如:
go
type ServiceProvider struct {
}
func (r *ServiceProvider) Relationship() binding.Relationship {
return binding.Relationship{
Bindings: []string{
BindingSession,
},
Dependencies: []string{
binding.Config,
},
ProvideFor: []string{
binding.Cache,
},
}
}
func (r *ServiceProvider) Register(app foundation.Application) {}
func (r *ServiceProvider) Boot(app foundation.Application) {}