最初,我确实通过这样做手动地包括了我的类。
@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;
}
}然后我找到了输出,为了能够在RestServlet中注入RestService,我需要使用ResourceConfig绑定器。
public class RestApplication extends ResourceConfig {
public RestApplication() {
register(new RestBinder());
packages(true, "");
}
}但是,如果不为每个注入类定义一个包并手动绑定它,我就弄不出如何使用ResourceConfig。
PS我也不明白如何确保所有的包扫描都是禁用的?
发布于 2013-11-18 09:00:07
您也可以为此目的使用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);
}
}https://stackoverflow.com/questions/20036424
复制相似问题