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
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")
},
)
|