Java 在Spring和init方法中嵌套抽象bean似乎不起作用

Java 在Spring和init方法中嵌套抽象bean似乎不起作用,java,spring,Java,Spring,我有以下构造SpringXML(Spring3.1): ... ... ... 我正在尝试将init方法分离到更高级别的抽象bean中: <bean id="taskRunnerLauncher" abstract="true" init-method="startThreads" /> <bean id="taskRunner" abstract="true" depends-on="taskRunnerLauncher" class="my.class.T

我有以下构造SpringXML(Spring3.1):


...
...
...
我正在尝试将init方法分离到更高级别的抽象bean中:

<bean id="taskRunnerLauncher" abstract="true" init-method="startThreads" />

<bean id="taskRunner" abstract="true" depends-on="taskRunnerLauncher"
      class="my.class.TaskRunner" />
...
<bean id="taskRunnerA" parent="taskRunner">
  <constructor-arg name="foo">...</constructor-arg>
  <property name="bar">...</property>
</bean>

...
...
...
不知何故,这不起作用,即在第二种情况下从未调用startThreads()。有人知道为什么吗?Spring支持嵌套的抽象bean吗

我这样做的想法是,我可以在单元测试中重写“taskRunnerLauncher”,并将其设置为“mock”或“java.lang.Object”,并抑制startThreads()调用(这会启动新线程,使测试变得很困难)

有人知道为什么吗


taskRunnerLauncher
bean被设置为
abstract
。这意味着它将只作为其他bean的模板。Spring实际上不会为它创建bean。因此,不会有任何对
startThreads
的调用,因为没有什么可以调用它。

发现了问题。我错误地在
taskRunner
bean上使用了
dependens
而不是
parent
属性。

但这是我的意图-taskRunnerA是具体的bean,taskRunner和taskRunnerLauncher是抽象的…@alexandroid代替
dependens
,尝试使用
parent
。我承认我没有真正玩过
abstract
bean声明。是的,我也注意到了这一点。非常感谢。
<bean id="taskRunnerLauncher" abstract="true" init-method="startThreads" />

<bean id="taskRunner" abstract="true" depends-on="taskRunnerLauncher"
      class="my.class.TaskRunner" />
...
<bean id="taskRunnerA" parent="taskRunner">
  <constructor-arg name="foo">...</constructor-arg>
  <property name="bar">...</property>
</bean>