目前,我知道两种方法:
- 将其指定为
<init-param>
在你的 web.xml 上 - 创建一个扩展
ResourceConfig
的类并将其添加到您的 web.xml
我有一个扩展 ResourceConfig
的类因为我需要注册一个 Application Binder ( AbstractBinder
) 来进行依赖注入(inject)。
我应该在哪里定义 REST 资源的位置?这里的最佳实践是什么?
最佳答案
在 ResourceConfig
,您可以调用packages("reource.packages")
,这与扫描 <init-param>
中声明的包的作用相同。
public class Config extends ResourceConfig {
public Config() {
packages("...");
register(new AbstractBinder()..);
}
}
要使用Config
类(class),你有几个选择。
用
@ApplicationPath("/appPath")
进行注释这样,就不需要 web.xml 了。您需要确保您拥有
jersey-container-servlet
依赖才能使其发挥作用。注释中的值的工作方式与<servlet-mapping>
相同。在 web.xml 内。声明
Config
web.xml 中的类<servlet> <servlet-name>MyApplication</servlet-name> <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> <init-param> <param-name>javax.ws.rs.Application</param-name> <param-value>org.foo.Config</param-value> </init-param> </servlet> ... <servlet-mapping> <servlet-name>MyApplication</servlet-name> <url-pattern>/myPath/*</url-pattern> </servlet-mapping>
您也可以不使用ResourceConfig
并在 Feature
中注册 Binder ,如所讨论的here
另请参阅:
关于java - Jersey 2.22 : Where should I define the location of REST resources?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33092583/