RESTEasy - 覆盖服务方法以跨不同方法实现一些通用逻辑的最佳实践(如在 servlet 中)
RESTEasy - Best practices to override service method to implement some generic logic across the different methods (like in servlet)
例如:我有一些跨不同资源的通用逻辑
@Path("/rest")
public class AddUser {
@GET
@Path("/AddUser/{ext}/{userId}")
@Produces(MediaType.APPLICATION_JSON)
public String addUser(@PathParam("tenantId") String tenantId, @PathParam("userId") Integer userId) {
//I have some common logic here
}
@Path("/newrest")
public class AddUser1 {
@GET
@Path("/AddUser/{ext}/{userId}")
@Produces(MediaType.APPLICATION_JSON)
public String addDifferentUser(@PathParam("tenantId") String tenantId, @PathParam("userId") Integer userId) {
//I have same common logic here as well
}
}
我可以扩展哪个 class 来覆盖其余服务的通用逻辑?
不推荐覆盖服务方法Should I override service ?
看看@ContainerRequestFilter容器请求过滤器实现的扩展接口。您可以在这里处理您的通用逻辑。
您可能不应该直接在通信层中拥有业务逻辑。想象一下使用不同的技术添加 soap 接口将不可能使用任何公共入口点。
您宁愿编写服务 class 并在需要的任何地方调用它。
例如:我有一些跨不同资源的通用逻辑
@Path("/rest")
public class AddUser {
@GET
@Path("/AddUser/{ext}/{userId}")
@Produces(MediaType.APPLICATION_JSON)
public String addUser(@PathParam("tenantId") String tenantId, @PathParam("userId") Integer userId) {
//I have some common logic here
}
@Path("/newrest")
public class AddUser1 {
@GET
@Path("/AddUser/{ext}/{userId}")
@Produces(MediaType.APPLICATION_JSON)
public String addDifferentUser(@PathParam("tenantId") String tenantId, @PathParam("userId") Integer userId) {
//I have same common logic here as well
}
}
我可以扩展哪个 class 来覆盖其余服务的通用逻辑?
不推荐覆盖服务方法Should I override service ?
看看@ContainerRequestFilter容器请求过滤器实现的扩展接口。您可以在这里处理您的通用逻辑。
您可能不应该直接在通信层中拥有业务逻辑。想象一下使用不同的技术添加 soap 接口将不可能使用任何公共入口点。
您宁愿编写服务 class 并在需要的任何地方调用它。