簡體   English   中英

在Spring中創建URL的最佳方法

[英]Best approach for creating URLs in Spring

假設我們有帶有URL映射的控制器,例如movie/{id}-{title}actor/{id}-{name}等。這些映射標識了我們應用中的某些對象,主要是實體-我們可以說這是RESTful服務。

我正在尋找一種解決方案,該將那些負責創建這些URI的方法放在哪里。 我認為在多個JSP文件和其他一些地方(重定向等)中創建它們是多余的。

首先,我想到的是使用方法public URI getURI()創建一些接口,該接口將在控制器中使用。 但是,在我看來,這將對實體產生太多影響-我更喜歡實體僅代表數據並且僅包含更改狀態的方法。

我的第二個想法是創建一個URIService具有重載方法,比如URI getURI(Movie m)URI getURI(Actor a) ,但會有在編譯時重載方法的選擇問題。 例如,在JSP中的EL中效果不佳,因為解決方案將以不同的方式命名方法。

我不想重新發明輪子,所以也許您知道或使用某些解決方案來解決這個問題?

您希望解決方案的企業精神如何? (我只是在開玩笑)

這是一個解決方案:擁有一個具有URI getURI(Object o)類的方法的服務。 此方法將檢查傳遞的對象是否屬於帶有指定URI路徑的注釋的類。 注釋示例:

public @interface PathTemplate {String value();}

帶有注釋的示例類:

@PathTemplate("/movie/{title}-{id}")
public class Movie {
  private int id;private String title;
  // getters and setters too
}

現在, getURI方法將看到參數對象的類具有PathTemplate批注,並將使用bean內省法對參數進行插值。 瞧! 可擴展且相對分離的URI生成。

暫無
暫無

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

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