簡體   English   中英

Spring Boot Applicaion什么是我的服務的正確命名和注釋

[英]Spring boot applicaion what is the correct naming and annotation for my service

我是Spring Boot應用程序的新手。 我不確定應用程序的正確命名和注釋。

我有以下服務界面。

@Service
public interface StockService {
    public String getStockContent();
    public List<StockElement> parseStockContents(String stockContent);
}

我有以下服務實施

@Service
public class StockServiceImpl implements StockService{

    public String getStockContent() {
        // IMPL removed because it is not relevant to this question. 
     }


    List<StockElement> parseStockContents(String stockContent) {
        // IMPL removed because it is not relevant to this question. 
     }   
 }

在功能方面,它運行良好。 我已經看到有很多mvc命名約定。 就像模型,實體,存儲庫,repositoryImpl,dao,daoImpl,服務,serviceImp,控制器等一樣。它們也有相應的注釋。

我清楚地了解模型,實體,服務,控制器。

我對dao和存儲庫感到困惑。 同樣在我的代碼中,我有服務接口和實現。 我都將其注釋為@Service,並且它正在工作。 我對此感到困惑。 都將被標注為@Service。 另外,我已經看到許多地方注釋為@Component。 @Component的用途是什么?

您能用一些代碼片段詳細解釋一下嗎?

@DAO不是Spring注釋(和命名約定),因此很混亂。 它是繼承自EJB的舊式命名。 @Repository在Spring環境中是完全一樣的-數據訪問對象-

這是一些細節,表明其命名的功能和用途完全相同, https://docs.spring.io/spring/docs/4.2.x/spring-framework-reference/html/dao.html

我對dao和存儲庫感到困惑。

Spring存儲庫(設計和使用)在DDD方面更像是一個DAO。 因此,您可以將其視為DAO。

同樣在我的代碼中,我有服務接口和實現。 我都將其注釋為@Service,並且它正在工作。 我對此感到困惑。 都將被標注為@Service。

接口應盡可能與后面的實現所使用的技術無關。 因此,用Spring注釋接口不是很理想,Spring也沒有考慮它,最后由於在實現中對其進行定義就沒有用了。

另外,我已經看到許多地方注釋為@Component。 @Component的用途是什么?

@Component javadoc指出:

指示帶注釋的類是“組件”。 當使用基於注釋的配置和類路徑掃描時,此類會被視為自動檢測的候選。

其他類級注釋也可以被視為標識組件,通常是一種特殊的組件:例如@Repository注釋或AspectJ的@Aspect注釋。

您可以將其視為最廣泛/最一般的構造型注釋,因為您將類定義為Spring bean。
例如,您將@Controller@Service @Controller@Repository型注釋給一個類,因為該類與其中一個匹配。
有時,沒有一個適合您的類,因此您使用@Component

就在接口或其實現類上應用@Service注釋的問題而言,對實現類進行注釋就足夠了。 服務批注 @Component Spring doc鏈接,您可能只想將其用於POJO和其他模型類。 對於存儲庫類,可以對JPA存儲庫或Mongo存儲庫等使用@Repository或任何其他擴展的數據源特定注釋。

參考文獻:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM