@@ -164,8 +164,7 @@ func OnEnableServers() ConditionOnProperty {
164164/************************************ ioc ************************************/
165165
166166type (
167- BeanID = gs.BeanID
168- BeanMock = gs.BeanMock
167+ BeanID = gs.BeanID
169168)
170169
171170type (
@@ -212,6 +211,7 @@ type (
212211)
213212
214213var B = gs_app .NewBoot ()
214+ var app = gs_app .NewApp ()
215215
216216// funcRunner is a function type that implements the Runner interface.
217217type funcRunner func () error
@@ -260,74 +260,77 @@ func RunAsync() (func(), error) {
260260
261261// Exiting returns a boolean indicating whether the application is exiting.
262262func Exiting () bool {
263- return gs_app . GS .Exiting ()
263+ return app .Exiting ()
264264}
265265
266266// ShutDown shuts down the app with an optional message.
267267func ShutDown () {
268- gs_app . GS .ShutDown ()
268+ app .ShutDown ()
269269}
270270
271271// Config returns the app configuration.
272272func Config () * gs_conf.AppConfig {
273- return gs_app . GS .P
273+ return app .P
274274}
275275
276276// Component registers a bean definition for a given object.
277277func Component [T any ](i T ) T {
278278 b := gs_bean .NewBean (reflect .ValueOf (i ))
279- gs_app . GS .C .Register (b ).Caller (1 )
279+ app .C .Register (b ).Caller (1 )
280280 return i
281281}
282282
283283// RootBean registers a root bean definition.
284284func RootBean (b * RegisteredBean ) {
285- gs_app . GS .C .RootBean (b )
285+ app .C .RootBean (b )
286286}
287287
288288// Object registers a bean definition for a given object.
289289func Object (i any ) * RegisteredBean {
290290 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 )
292292}
293293
294294// Provide registers a bean definition for a given constructor.
295295func Provide (ctor any , args ... Arg ) * RegisteredBean {
296296 b := gs_bean .NewBean (ctor , args ... )
297- return gs_app . GS .C .Register (b ).Caller (1 )
297+ return app .C .Register (b ).Caller (1 )
298298}
299299
300300// Register registers a bean definition.
301301func Register (b * BeanDefinition ) * RegisteredBean {
302- return gs_app . GS .C .Register (b )
302+ return app .C .Register (b )
303303}
304304
305305// Module registers a module.
306306func Module (conditions []ConditionOnProperty , fn func (p conf.Properties ) error ) {
307- gs_app . GS .C .Module (conditions , fn )
307+ app .C .Module (conditions , fn )
308308}
309309
310310// 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 {
313313 OnProperty (key ),
314314 }, func (p conf.Properties ) error {
315315 var m map [string ]T
316316 if err := p .Bind (& m , "${" + key + "}" ); err != nil {
317317 return err
318318 }
319319 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+ }
321324 }
322325 return nil
323326 })
324327}
325328
326329// RefreshProperties refreshes the app configuration.
327330func RefreshProperties () error {
328- p , err := gs_app . GS .P .Refresh ()
331+ p , err := app .P .Refresh ()
329332 if err != nil {
330333 return err
331334 }
332- return gs_app . GS .C .RefreshProperties (p )
335+ return app .C .RefreshProperties (p )
333336}
0 commit comments