簡體   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