Я пробую и Golang, и Beego. Я родом из Java/Spring, и мне немного сложно реализовать шаблон singleton для веб-приложения, которое я разрабатываю. У меня есть контроллер (который я хочу сделать одноэлементным), и у меня есть служба внутри моего контроллера (который я также хочу сделать одноэлементным). Я думал, что если я сделаю свою службу указателем, то всегда буду использовать один и тот же адрес (одиночный). Это не соответствует действительности.
Мой маршрут выглядит так
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()
}
}
Мои журналы всегда показывают, что пользовательский сервис равен нулю при каждом запросе. Как я могу получить один экземпляр моего контроллера с одним (инициализированным только один раз) экземпляром моей пользовательской службы?