@@ -164,8 +164,7 @@ func OnEnableServers() ConditionOnProperty {
164
164
/************************************ ioc ************************************/
165
165
166
166
type (
167
- BeanID = gs.BeanID
168
- BeanMock = gs.BeanMock
167
+ BeanID = gs.BeanID
169
168
)
170
169
171
170
type (
@@ -212,6 +211,7 @@ type (
212
211
)
213
212
214
213
var B = gs_app .NewBoot ()
214
+ var app = gs_app .NewApp ()
215
215
216
216
// funcRunner is a function type that implements the Runner interface.
217
217
type funcRunner func () error
@@ -260,74 +260,77 @@ func RunAsync() (func(), error) {
260
260
261
261
// Exiting returns a boolean indicating whether the application is exiting.
262
262
func Exiting () bool {
263
- return gs_app . GS .Exiting ()
263
+ return app .Exiting ()
264
264
}
265
265
266
266
// ShutDown shuts down the app with an optional message.
267
267
func ShutDown () {
268
- gs_app . GS .ShutDown ()
268
+ app .ShutDown ()
269
269
}
270
270
271
271
// Config returns the app configuration.
272
272
func Config () * gs_conf.AppConfig {
273
- return gs_app . GS .P
273
+ return app .P
274
274
}
275
275
276
276
// Component registers a bean definition for a given object.
277
277
func Component [T any ](i T ) T {
278
278
b := gs_bean .NewBean (reflect .ValueOf (i ))
279
- gs_app . GS .C .Register (b ).Caller (1 )
279
+ app .C .Register (b ).Caller (1 )
280
280
return i
281
281
}
282
282
283
283
// RootBean registers a root bean definition.
284
284
func RootBean (b * RegisteredBean ) {
285
- gs_app . GS .C .RootBean (b )
285
+ app .C .RootBean (b )
286
286
}
287
287
288
288
// Object registers a bean definition for a given object.
289
289
func Object (i any ) * RegisteredBean {
290
290
b := gs_bean .NewBean (reflect .ValueOf (i ))
291
- return gs_app . GS .C .Register (b ).Caller (1 )
291
+ return app .C .Register (b ).Caller (1 )
292
292
}
293
293
294
294
// Provide registers a bean definition for a given constructor.
295
295
func Provide (ctor any , args ... Arg ) * RegisteredBean {
296
296
b := gs_bean .NewBean (ctor , args ... )
297
- return gs_app . GS .C .Register (b ).Caller (1 )
297
+ return app .C .Register (b ).Caller (1 )
298
298
}
299
299
300
300
// Register registers a bean definition.
301
301
func Register (b * BeanDefinition ) * RegisteredBean {
302
- return gs_app . GS .C .Register (b )
302
+ return app .C .Register (b )
303
303
}
304
304
305
305
// Module registers a module.
306
306
func Module (conditions []ConditionOnProperty , fn func (p conf.Properties ) error ) {
307
- gs_app . GS .C .Module (conditions , fn )
307
+ app .C .Module (conditions , fn )
308
308
}
309
309
310
310
// Group registers a module for a group of beans.
311
- func Group [T any , R any ](key string , fn func (c T ) (R , error )) {
312
- gs_app . GS .C .Module ([]ConditionOnProperty {
311
+ func Group [T any , R any ](key string , fn func (c T ) (R , error ), d func ( R ) error ) {
312
+ app .C .Module ([]ConditionOnProperty {
313
313
OnProperty (key ),
314
314
}, func (p conf.Properties ) error {
315
315
var m map [string ]T
316
316
if err := p .Bind (& m , "${" + key + "}" ); err != nil {
317
317
return err
318
318
}
319
319
for name , c := range m {
320
- Provide (fn , ValueArg (c )).Name (name )
320
+ b := Provide (fn , ValueArg (c )).Name (name )
321
+ if d != nil {
322
+ b .Destroy (d )
323
+ }
321
324
}
322
325
return nil
323
326
})
324
327
}
325
328
326
329
// RefreshProperties refreshes the app configuration.
327
330
func RefreshProperties () error {
328
- p , err := gs_app . GS .P .Refresh ()
331
+ p , err := app .P .Refresh ()
329
332
if err != nil {
330
333
return err
331
334
}
332
- return gs_app . GS .C .RefreshProperties (p )
335
+ return app .C .RefreshProperties (p )
333
336
}
0 commit comments