假设我们拥有带有movie/{id}-{title}
,actor/{id}-{name}
等URL映射的控制器。这些映射标识了我们应用中的一些对象,主要是实体 - 我们可以说它是RESTful服务。
我正在寻找一个解决方案,我应该在哪里放置负责创建这些URI的方法。我认为在多个JSP文件和其他一些地方(重定向等)创建它们是多余的。
首先,我想到的是创建一些方法public URI getURI()
的接口,将在控制器中使用的类将实现。但是,在我看来,这将涉及太多的实体 - 我更喜欢实体只是为了表示数据而只包含改变状态的方法。
我的第二个想法是使用URIService
和URI getURI(Movie m)
等重载方法创建URI getURI(Actor a)
,但在编译时选择重载方法会有问题。例如,在JSP中的EL中效果不佳,因为解决方案的方法不同。
我不想重新发明轮子,所以也许您知道或使用某种解决方案来解决这个问题?
答案 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生成。