我正在使用相同的表单创建一些资源类,所以一个好主意是使用DRY并使用继承。 所以我创建了一个RootResource类并在那里放了一些方法。我想注释它们然后在子类中实现它们但它不起作用!以下是示例代码:
public abstract class RootResource {
@GET
@Path("/{id: .*}")
public abstract String getInfo(String uid);
}
@Path("/user")
public class UserResource extends RootResource{
public String getInfo(@PathParam("id") String uid) {
System.out.println("Hello!");
}
}
我使用的是球衣2.6。 任何的想法? 感谢。
答案 0 :(得分:4)
我在使用泽西时经历过同样的问题。 Java EE standard for JAX-RS声明如下:
3.6注释继承
JAX-RS注释可用于>的方法和方法参数。超级或实施 接口。这样的注释由相应的子类继承 或实现类方法提供的方法及其参数 没有任何自己的JAX-RS注释。关于a的注释 超类优先于已实现接口上的类。 多个中定义的冲突注释的优先级 实现的接口是特定于实现的。
如果子类或实现方法有任何JAX-RS注释,那么超类或接口方法上的所有注释都是 忽略强>
虽然Jersey作为参考实现对此声明非常严格,但Resteasy实现更宽松,并为我做了诀窍。
答案 1 :(得分:0)
指定类的路径非常重要,因为它是根资源类,因此它将获取查看类加载的位置,而不是单个重写方法:
@Path("/account/member/")
public class RootResource {
. . .