je trouve qu'il est impossible de post-traitement d'un haricot avant factoryBean.getObject() est appelée. 'resultBean' est une dépendance d'un bean initialisé au début, de sorte qu'il est instancié en premier. Voir "MyBeanPostProcessor" pour faire quelque chose avec 'myBean' avant que 'resultBean' soit construit dans 'MyFactoryBean'. Ni aide paresseuse ni dépend-sur. Quoi qu'il arrive, 'MyFactoryBean.getObject()' est toujours appelé en premier.Comment traiter un bean avant factoryBean retourne une instance?
<bean id="myBean" class="example.MyBean" />
<bean id="myBeanPostProcessor" class="example.MyBeanPostProcessor" />
<bean id="resultingBean" class="example.MyFactoryBean" depends-on="myBean"/>
Une idée de comment faire face à cela? J'ai choisi BeanPostProcessor exprès parce que cette exigence doit faire face à la mise en place de la méthode se moque mocito précédentes JUnit de @Before ... Le problème est que la mise en place de ces simulacres de méthode @Before est trop tard car vous avez besoin de travailler avec eux au moment de leur contexte initialisation
Il n'y a pas beaucoup de façons de le faire, y compris ExecutionListeners, ContextLoaders, BeanFactoryPostprocessor, Runner et bien d'autres.
J'utilise springockito qui se moque de mes haricots à la volée.
Ceci est un petit inconvénient du cadre d'essai de printemps autrement parfait.
Pouvez-vous pas faire le traitement dans le constructeur de MyBean? ou dans les méthodes setter? – Link19
Je ne peux pas, myBean est en fait le sujet de moqueries. Le haricot j'essaie de me moquer. Lors de l'appel de factoryBean.getObject(), 'myBean' est déjà dans beanFactory. – lisak
J'ai tendance à simplement pointer et rire si j'ai besoin de se moquer de quelque chose. – Link19