简化后的代码如下:<bean name="mockDao" class="com.MockDao"/>
<alias name="mockDao" alias="dao"/>
<bean name="handler" class="com.Handler">
<property name="mockDao" ref="dao"/>
</bean>
<bean name="dao" class="com.ActualDao">
</bean>
我的本意是:当调用Handler中dao方法时,程序会去调用MockDao的方法。
但是在实际运行时,程序并没有调用mockDao的方法,而是继续调用 ActualDao中的方法。
程序为什么没有去调用mockDao中的方法,而是继续调用Dao中的方法呢?但是如果把代码改成<property name="mockDao" ref="dao2"/>
<alias name="mockDao" alias="dao2"/>
程序会去调用MockDao中的方法。难道与spring的加载顺序有关?
<alias name="mockDao" alias="dao"/>
<bean name="handler" class="com.Handler">
<property name="mockDao" ref="dao"/>
</bean>
<bean name="dao" class="com.ActualDao">
</bean>
我的本意是:当调用Handler中dao方法时,程序会去调用MockDao的方法。
但是在实际运行时,程序并没有调用mockDao的方法,而是继续调用 ActualDao中的方法。
程序为什么没有去调用mockDao中的方法,而是继续调用Dao中的方法呢?但是如果把代码改成<property name="mockDao" ref="dao2"/>
<alias name="mockDao" alias="dao2"/>
程序会去调用MockDao中的方法。难道与spring的加载顺序有关?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货