Вы можете переопределить аргументы конструктора, используемые для создания компонента, с помощью BeanFactory.getBean(String name, Object... args)
. Недостатки этого способа заключаются в том, что поиск должен выполняться по имени компонента, а не по его классу, и что этот метод переопределяет все аргументы конструктора одновременно, поэтому вы должны использовать установочную зависимость для MyService
:
public class MainView implements IMainView {
private MainPresenter _presenter;
public MainView() {
_presenter = beanFactory.getBean("MainPresenter", this);
}
}
Также обратите внимание на область действия prototype
, потому что каждому MainView
нужен свой MainPresenter
<bean id="MyService" class="Foo.MyService"/>
<bean id="MainPresenter" class="Foo.MainPresenter" scope = "prototype">
<constructor-arg type="IMainView"><null /></constructor-arg>
<property name = "myService">
<ref bean="MyService"/>
</property>
</bean>