是否可以定义一个与其实现分开的jax-rs服务接口(使用eclipse和jersey)?
我不知道标题是否令人困惑,但让我说我有这个界面:
@Produces(MediaType.APPLICATION_JSON) @Path("/user") public interface UserService { @GET @Path("/{userId}") public Response getUser(@PathParam("userId") Long userId); }
为什么当我尝试实现一个版本Eclipse重写覆盖方法的注释而不是类?
class UserServiceImpl implements UserService { @Override @GET @Path("/{userId}") public Response getUser(@PathParam("userId") Long userId) { // TODO Auto-generated method stub return null; } }
我试图为restful Web服务创建一个标准定义,然后进行不同的实现。 用标准的jax-rs可以这样吗? 我是否有机会使用错误的注释?
只有在实现类上不使用任何 jax-rs
注释时,才可以使用注释inheritance:它在JSR-339的第3.6节中说明。
您为该方法重新定义@Path
和@Produces
,但不为该类重新定义。
因此,代码中的Path
注释应该在具体类上:
public interface UserService { @GET @Path("/{userId}") @Produces(MediaType.APPLICATION_JSON) public Response getUser(@PathParam("userId") Long userId); } @Path("/user") class UserServiceImpl implements UserService { @Override @GET @Path("/{userId}") @Produces(MediaType.APPLICATION_JSON) public Response getUser(@PathParam("userId") Long userId) { // TODO Auto-generated method stub return null; } }
顺便说一下,规范鼓励我们复制具体类的注释:
为了与其他Java EE规范保持一致,建议始终重复注释,而不是依赖注释inheritance。