Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JAX-RS中的多个@Path_Java_Spring_Rest_Jax Rs_Jersey 2.0 - Fatal编程技术网

Java JAX-RS中的多个@Path

Java JAX-RS中的多个@Path,java,spring,rest,jax-rs,jersey-2.0,Java,Spring,Rest,Jax Rs,Jersey 2.0,背景:我问了另一个问题:关于球衣的表现。我还在泽西岛吉拉发行了一期。显然,jersey 2中的子资源存在已知的性能问题 我的数据模型基于实体A,包含多个子实体。但是,子实体的ID是唯一的,服务器允许直接访问它们。比如说, /server/As/{a_id}/Bs/{b_id}==/server/Bs/{b_id} 我们正在为此使用子资源,因此相同的资源B既是spring组件又是资源的成员。所有的资源都是Springbean,所以两个B都是同一个实例 现在我试图通过根本不使用子资源来解决这个问题。

背景:我问了另一个问题:关于球衣的表现。我还在泽西岛吉拉发行了一期。显然,jersey 2中的子资源存在已知的性能问题

我的数据模型基于实体A,包含多个子实体。但是,子实体的ID是唯一的,服务器允许直接访问它们。比如说,

/server/As/{a_id}/Bs/{b_id}==/server/Bs/{b_id}

我们正在为此使用子资源,因此相同的资源B既是spring组件又是资源的成员。所有的资源都是Springbean,所以两个B都是同一个实例

现在我试图通过根本不使用子资源来解决这个问题。我发现@Path不支持多条路径。有没有办法解决这个问题

我试过以下方法,有意义吗?你能提供其他选择吗?我这样问是因为我将不得不对实体C、D、E等进行多次相同的操作,可能还需要额外的资源级别

首先,我从资源类中删除了B引用,然后:

public abstract class AbstractB {

    @GET
    @Path({b_id})
    @Produce(MediaType.APPLICATION_JSON)
    public Response getB(@PathParam("b_id") String bId) {
        ...
    } 

    ...
}

@Component
@Path ("As/{a_id}/Bs") 
public class B extends AbstractB{/* empty */}

@Component
@Path ("Bs") 
public class AsB extends AbstractB{/* empty */}

编辑:通过peeskillet-

您可以改用委托吗?如果可以注入具有BL for B的类,那么可以从那里调用相同的REST端点。