您不能@Path
在单个方法上具有多个注解。它将导致“重复注释”语法错误。
但是,有多种方法可以有效地将两个路径映射到一个方法。
@Path
JAX-RS中的注释接受参数,可以使用正则表达式限制其值。
此注释:
@Path("a/{parameter: path1|path2}")
将使同时针对/a/path1
和的请求都可以访问该方法/a/path2
。如果您需要使用子路径,请使用斜杠转义:{a:path1\\/subPath1|path2\\/subPath2}
或者,您可以设置重定向。这是通过定义另一个子资源在Jersey(JAX-
RS的参考实现)中进行操作的方法。这只是一个示例,如果您喜欢使用其他方法来处理重定向,请随时使用它。
@Path("basepath")
public class YourBaseResource {
//this gets injected after the class is instantiated by Jersey
@Context
UriInfo uriInfo;
@Path("a/b")
@GET
public Responce method1(){
return Response.ok("blah blah").build();
}
@Path("a/b/c")
@GET
public Response method2(){
UriBuilder addressBuilder = uriInfo.getBaseUriBuilder();
addressBuilder.path("a/b");
return Response.seeOther(addressBuilder.build()).build();
}
}
如果您经常需要这种功能,建议您使用Servlet过滤器拦截传入的请求,并即时重写路径。这应该有助于您将所有重定向都放在一个地方。理想情况下,您可以使用现成的库。UrlRewriteFilter
只要您拥有BSD许可证就可以解决问题(请查看其Google代码网站以获取详细信息)
另一个选择是通过在Java应用程序前面设置代理来处理此问题。您可以设置一个Apache服务器以提供基本的缓存和重写规则,而不必使Java代码复杂化。
我有一个带有postgresql数据库Hibernate注释的JAVA POJO类。 现在,我需要在应用程序中支持多个数据库。我的问题是:我们应该在其他数据库(Oracle、MySQL、SQL Server)中使用同一个类,还是应该为每个不同的数据库编写单独的注释类? 原因:为了支持特殊字符,我们使用数据库专有类型,而不是像这样的hibernate类型
问题内容: 我试图在一个元素上拍两个或多个相同类型的注释,在这种情况下是方法。这是我正在使用的近似代码: 编译以上内容时,javac抱怨重复的注释: 这样根本不可能重复注释吗?从学步上讲,上面的两个@Foo实例是否由于内容不同而不同吗? 如果上述方法不可行,有哪些可能的解决方法? 更新:我被要求描述我的用例。开始。 我正在建立一种语法糖化机制,以“映射” POJO到文档存储(例如MongoDB)。
团队 我想使用Powermock私有空方法来模拟下面的方法ToMock(int参数1、字符串参数2、int参数3){} 我在下面尝试了一个不起作用的示例类spyObject=PowerMockito。spy(新SampleClass());PowerMockito。doNothing()。当(间谍对象,“methodToMock”,
问题内容: 我试图测试从工厂生成的两个对象是否相同,但是编译器似乎不允许对仅符合同一协议的对象进行身份检查。但是,将两个对象都转换为AnyObject似乎很好。无论如何,有必要避免似乎不必要的转换? 这是一个简单的示例,演示了我所看到的内容(快速1.2) 问题答案: 身份运算符只能应用于 引用 ,即 类的 实例。如果所有符合协议的类型都是类,则可以将其声明为“类协议” 然后 编译并按预期工作,因为
我想从多个SQS队列中触发一个lambda函数。lambda将进行的大部分处理都是相同的,只是一个小步骤将基于表名。我不想为此保留两个单独的lambda。拥有相同/多个lambda的利弊是什么?
是否允许在一个方法中使用多个@scheduled注释?