可以重写用于创建bean的构造函数参数
BeanFactory.getBean(String name, Object... args)
.这种方法的缺点是,查找必须由bean名称而不是其类完成,并且此方法一次重写所有构造函数参数,因此必须使用setter依赖项
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>