应用程序启动后/在应用程序事件[spring]上初始化bean

时间:2016-09-22 13:49:47

标签: spring spring-boot

我有以下情况。在我的微服务[ MA ]中,我想在应用程序启动后或基于某些事件初始化/销毁一些bean。想象力还有另一个微服务[ MB ],其中包含有关 ContentStores 的信息。在 MA 启动之后,我想询问 MB 的contentStore条目,并根据我想要根据需要创建那么多bean。可能会触发storeCreated / storeDeleted的事件,在这种情况下我需要销毁bean。

我目前不知道我需要实现哪些接口/类扩展,所以请给我一些建议。

让我们从ApplicationListener和事件ApplicationReadyEvent开始吧。有了这两个,我知道 MA 已初始化,我可能会要求 MB 查看商店列表。

在这个地方,我可以利用事件的applicationContext并创建bean(每个bean都有自己的限定符 - 例如ID),如果需要,可以自动连接它们的依赖项。

但是从这个地方我不知道如何将创建的bean添加到ApplicationContext。

应用程序事件应该存在相同的机制,但在这种情况下,我可能首先检查bean是否已创建,如果是,则返回它们。

注意:我正在使用spring-boot 1.4。

由于

1 个答案:

答案 0 :(得分:0)

  

我想在应用程序启动后或基于某些事件初始化/销毁一些bean。

对于这个问题,您可以使用org.springframework.beans.factory.support.BeanDefinitionRegistryPostProcessor注册BeanDefinition

来注册bean

另一种方法是在bean中使用@PostConstruct - “PostConstruct注释用于在完成依赖注入以执行任何初始化之后需要执行的方法。”

对于应用程序退出,您可以在此处使用应用程序退出挂钩 - doc