最初我通过这样做手动包含我的课程
@ApplicationPath("/")
public class RestApplication extends Application {
@Override
public Set<Class<?>> getClasses() {
final Set<Class<?>> classes = new HashSet<Class<?>>();
classes.add(RestServlet.class);
classes.add(RestService.class);
return classes;
}
}
然后我找到out以便能够在RestServlet中注入RestService我需要使用ResourceConfig绑定器。
public class RestApplication extends ResourceConfig {
public RestApplication() {
register(new RestBinder());
packages(true, "");
}
}
但我无法弄清楚如何在不定义包的情况下使用ResourceConfig并为每个注入类手动绑定它?
PS我也不明白如何确保禁用所有包扫描?
答案 0 :(得分:1)
您也可以使用ResourceConfig#register()
方法来实现此目的:
public class RestApplication extends ResourceConfig {
public RestApplication() {
register(new RestBinder());
register(RestServlet.class);
register(RestService.class);
}
}
通过此类注册,不会扫描您的包以获取任何其他资源或提供商。通过META-INF/services
可发现的提供商仍会在您的申请中注册。对于服务器和客户端,您可以关闭此功能,jersey.config.disableMetainfServicesLookup
属性,或者仅限服务器jersey.config.disableMetainfServicesLookup.server
(您可以在ServerProperties类中找到此属性和其他属性):
public class RestApplication extends ResourceConfig {
public RestApplication() {
register(new RestBinder());
register(RestServlet.class);
register(RestService.class);
property(ServerProperties.METAINF_SERVICES_LOOKUP_DISABLE, true);
}
}