我有以下情况。在我的微服务[ 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。
由于
答案 0 :(得分:0)
我想在应用程序启动后或基于某些事件初始化/销毁一些bean。
对于这个问题,您可以使用org.springframework.beans.factory.support.BeanDefinitionRegistryPostProcessor
注册BeanDefinition
另一种方法是在bean中使用@PostConstruct
- “PostConstruct注释用于在完成依赖注入以执行任何初始化之后需要执行的方法。”
对于应用程序退出,您可以在此处使用应用程序退出挂钩 - doc