繁体   English   中英

如何在Spring Boot中使用抽象类?

[英]How to use abstract classes in spring boot?

@Component
public abstract class AbstractProcessTask implements Task {

  @Resource
  protected WorkOrderEventService workOrderEventService;
  @Resource
  protected NodeService nodeService;
  @Resource
  protected ConfigReader configReader;

  protected void updateStatus(WorkOrderEvent workOrderEvent, String status, String description) {
    workOrderEvent.setStatus(status);
    workOrderEvent.setComments(description);
    workOrderEventService.saveWorkOrderEvent(workOrderEvent);
  }
}

我写了一个抽象类供使用,但我不知道如何使用。 在旧的春季版本中,我们可以在xml中编写abstract =“ true”。 例如:

<bean id="BaseEventAction" class="com.sinosig.evaluation.fcff.web.event.BasicEventAction"
        abstract="true" parent="BaseAction">
        <property name="rowFactory" ref="FcffCacheAdapter" />
        <property name="caculate" ref="CaculateService" />
        <property name="diffusion" ref="DeffusionService" />
    </bean>

我该怎么办?

在抽象类上使用@Component不会帮助Spring从该类创建Bean(当然,您知道不能从抽象类实例化对象)。 在具体类上使用@Component批注。

@Component
public class MyProcessTask extends AbstractProcessTask {
...
}

其余的都还可以。 如果spring在扫描路径中找到具体的类,则将自动创建关联的bean。

不要与属性“ abstract = true”混淆

当您在bean声明中提到属性abstract=true时,您只是在抽象bean。 Spring中的抽象bean与抽象类有所不同。 实际上,Spring中的抽象bean甚至不必映射到任何类。

有关更多信息,请参见这个不错的答案

您可以简单地用另一个类扩展抽象类,并在子@Component中使用@Component 您可能还需要实现超类中的任何方法。

@Component
public class AbstractChild extends AbstractProcessTask {
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM