在Spring中创建URL的最佳方法

时间:2013-08-06 19:20:13

标签: java spring rest java-ee spring-mvc

假设我们拥有带有movie/{id}-{title}actor/{id}-{name}等URL映射的控制器。这些映射标识了我们应用中的一些对象,主要是实体 - 我们可以说它是RESTful服务。

我正在寻找一个解决方案,我应该在哪里放置负责创建这些URI的方法。我认为在多个JSP文件和其他一些地方(重定向等)创建它们是多余的。

首先,我想到的是创建一些方法public URI getURI()的接口,将在控制器中使用的类将实现。但是,在我看来,这将涉及太多的实体 - 我更喜欢实体只是为了表示数据而只包含改变状态的方法。

我的第二个想法是使用URIServiceURI getURI(Movie m)等重载方法创建URI getURI(Actor a),但在编译时选择重载方法会有问题。例如,在JSP中的EL中效果不佳,因为解决方案的方法不同。

我不想重新发明轮子,所以也许您知道或使用某种解决方案来解决这个问题?

1 个答案:

答案 0 :(得分:0)

您希望解决方案如何实现企业化? (我只是半开玩笑)

这是一个解决方案:拥有一个类似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生成。