gpt4 book ai didi

java - 如何在factoryBean返回实例之前处理bean?

转载 作者:行者123 更新时间:2023-12-02 07:34:30 26 4
gpt4 key购买 nike

我发现在调用factoryBean.getObject()之前不可能对bean进行后处理。 “resultingBean”是一些在开始时初始化的bean的依赖项,因此它首先被实例化。请参阅,在“MyFactoryBean”中构造“resultingBean”之前,我需要“myBeanPostProcessor”对“myBean”执行某些操作。惰性初始化和依赖都没有帮助。无论如何,“MyFactoryBean.getObject()”总是首先被调用。

<bean id="myBean" class="example.MyBean" />

<bean id="myBeanPostProcessor" class="example.MyBeanPostProcessor" />

<bean id="resultingBean" class="example.MyFactoryBean" depends-on="myBean"/>

知道如何处理这个问题吗?我故意选择 BeanPostProcessor 是因为这个要求应该处理在 junit @Before 方法之前设置 mocito 模拟...问题是在 @Before 方法中设置这些模拟为时已晚,因为您需要在上下文时使用它们初始化。

实现这一点的方法并不多,包括 ExecutionListeners、ContextLoaders、BeanFactoryPostprocessor、Runner 等等。

我正在使用springockito它会即时 mock 我的 bean 。

这是完美的 Spring 测试框架的一个小缺点。

最佳答案

我不太同意使用这样的模拟(即用于集成测试),但我理解你的问题。

您需要使用在InitializingBean和BeanPostProcessor之前调用的ApplicationContextAware接口(interface)。

但是,您的工厂将始终首先被调用,因此请考虑不同的选项,例如新的 java 风格的配置或重构(因为您似乎可能具有某种循环依赖性)

除了我需要更多信息之外。

关于java - 如何在factoryBean返回实例之前处理bean?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12449102/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com