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()
}
}
私のログは、リクエストごとにユーザーサービスがゼロであることを常に示しています。ユーザー サービスの 1 つの (1 回だけ初期化される) インスタンスを使用して、コントローラーの 1 つのインスタンスを取得するにはどうすればよいですか?