我正在尝试 Golang 和 Beego。我来自 Java/Spring 背景,我在为我正在开发的 web 应用程序实现单例模式时遇到了一些困难。我有一个控制器(我想成为一个单例),并且我的控制器中有一个服务(我也想成为一个单例)。我想如果我让我的服务成为一个指针,那么我总是会使用相同的地址(单例)。事实证明这是不正确的。
我的路线看起来像这样
beego.Router("/", &controllers.SessionController{}, "get:Login")
我的 SessionController 看起来像这样
type SessionController struct {
baseController
userService *services.UserService
}
func (this *SessionController) Prepare() {
this.baseController.Prepare()
if this.userService == nil {
beego.Info("user service was nil")
this.userService = factories.NewUserService()
}
}
我的日志总是显示每次请求时用户服务为零。如何使用我的用户服务的单个(仅初始化一次)实例获取我的控制器的单个实例?