Skip to main content
Remy DI - Dependency Injection for Go
GitHub Go Docs Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

Singleton

Singleton creates a single instance immediately when the bind is registered. The instance is built during the registration phase and reused throughout the application lifetime.

Key Points:

  • ⚔ Instance is created during registration
  • šŸ”’ Thread-safe singleton pattern
  • šŸ“¦ Same instance returned for all requests

Example

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
package main

import (
	"database/sql"

	"github.com/wrapped-owls/goremy-di/remy"
)

func init() {
	remy.Register(
		nil,
		remy.Singleton(
			func(retriever remy.DependencyRetriever) (*sql.DB, error) {
				// This is called immediately during registration
				return sql.Open("sqlite3", "file:locked.sqlite?cache=shared&mode=memory")
			},
		),
	)
}

You can also use the convenience function:

1
2
3
4
5
6
remy.RegisterSingleton(
	nil,
	func(retriever remy.DependencyRetriever) (*sql.DB, error) {
		return sql.Open("sqlite3", "file:locked.sqlite?cache=shared&mode=memory")
	},
)