有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java重写方法上的类级别@Path注释

我有两个java文件,其中包含处理文件管理的端点。一个叫做FileResource。java,另一个是DirectoryResource。JAVA目录资源。java只有一种方法,即createDirectory。我需要将该方法移到FileResource。java并删除DirectoryResource。完全是java

问题是createDirectory方法的端点当前是/api/dir/create。当我将其移到FileResource时。java它将不再工作,因为类级别的@Path注释位于“/file/”而不是“/dir/”

我的问题是:是否可以覆盖方法上的@Path注释,以便在将端点/api/dir/create移动到FileResource类后可以维护它

我想确保那些使用api的人不必重构代码以指向新的端点

//FileResource.java
...

@Path("/file/")
public class FileResource() {

  @POST
  @Path("create")
  public Response createFile(String fileContent) {
    ...
    return Response.ok().build();
  }

  ...
}


//DirectoryResource.java
...

@Path("/dir/")
public class DirectoryResource() {

  @POST
  @Path("create")
  public Response createDirectory(String path) {
    ...
    return Response.ok().build();
  }

  ...
}

共 (1) 个答案

  1. # 1 楼答案

    没有@Path注释的“重写”。它们添加了

    在用@Path("dir")注释的类中,用@Path("create")注释的方法将解析为/dir/create

    通过在正确的通道中定义正确的方法来定义路径。只有在需要更改路径时,才能移动方法和删除通道

    我认为没有理由在不更改API的情况下更改频道,但是如果仍然需要,则应该使用Apache上的mod_rewrite播放。但我建议不要这样做。保持你的频道结构干净