1

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

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

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

我的第二个想法是用and之URIService类的重载方法创建一个,但是在编译时选择重载方法会有问题。例如,在 JSP 中的 EL 中不能很好地工作,因为解决方案会以不同的方式命名方法。URI getURI(Movie m)URI getURI(Actor a)

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

4

1 回答 1

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 生成。

于 2013-08-06T20:58:16.657 回答