【问题标题】:Are there any ways to initialize spring bean after the whole context was initialized or server startup was performed?在初始化整个上下文或执行服务器启动后,有什么方法可以初始化 spring bean?
【发布时间】:2018-08-13 21:16:52
【问题描述】:

目前我正在处理遗留的 Hybris 项目。我们在 Java 7 中使用 Hybris 4.8 和 Srping 3。

有一个工厂类执行一些逻辑以实例化另一个 bean。问题是这个工厂 bean 在启动期间与 Spring 上下文中的其他 bean 和数据库进行交互,并且 Spring 似乎无法正确解析所有依赖项。所以我们在启动过程中遇到了死锁。

为了避免这个问题,这个特定的 bean 可以在所有其他 bean 被初始化之后(甚至在服务器启动之后)创建。我如何在 hybris 中做这种事情?

我知道整个架构概念看起来有点奇怪,但它是一个遗留项目,必须尽快找到解决方案,并且改动最少

【问题讨论】:

  • 1.创建一个实现ApplicationListener 并监听ContextRefreshedEvent 事件的bean 类。 2、实现该类的onApplicationEvent方法,执行需要的逻辑,例如MyFactory factory = new MyFactory(); context.getAutowireCapableBeanFactory().autowireBean(factory);

标签: spring dependency-injection hybris spring-3


【解决方案1】:

您可以通过BeanFactoryPostProcessorBeanPostProcessor 实现您所需要的。

关于差异阅读:https://stackoverflow.com/a/30456202/1140748

您可以在网上找到实现示例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-02
    • 2017-09-17
    • 2016-05-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多