弹簧类和抽象类 - 在抽象类中注入属性

2022-09-03 07:15:56

我有一个抽象基类,其中包含一个名为“mailserver”的属性,我希望从弹簧ioc容器中注入它。但是,当我运行抽象类的具体实现时,我得到邮件服务器属性的 null。

正确的方法是什么?你有没有试过做这样的事情并取得了成功?请分享。


答案 1

使用属性将抽象基类定义标记为抽象,并在具体类定义中,使属性成为抽象类的bean名称的名称abstractparent

像这样:

<bean id="abstractBaseClass" abstract="true" class="pacakge1.AbstractBaseClass">
  <property name="mailserver" value="DefaultMailServer"/>
</bean>

<bean id="concreteClass1" class="pacakge1.ConcreteClass1" parent="abstractBaseClass">     
  <!--Override the value of the abstract based class if necessary-->
  <property name="mailserver" value="AnotherMailServer"/>
</bean>

答案 2

超类中的属性,无论是否抽象,都与Spring中的任何其他属性完全相同。您可以使用基于 XML、注释或 Java 配置的 setter、构造函数或字段注入。你会发现整个春天都广泛使用继承:例如,DefaultMessageListenerContainer。展示您如何尝试连接该属性,然后有人可以向您解释为什么它不起作用。


推荐