Java Jersey 2:如何在不扫描包的情况下绑定注入类?
最初,我确实通过这样做手动包含了我的类Java Jersey 2:如何在不扫描包的情况下绑定注入类?,java,jersey,jersey-2.0,Java,Jersey,Jersey 2.0,最初,我确实通过这样做手动包含了我的类 @ApplicationPath("/") public class RestApplication extends Application { @Override public Set<Class<?>> getClasses() { final Set<Class<?>> classes = new HashSet<Class<?>>();
@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;
}
}
但是如果不为每个注入类定义一个包并手动绑定它,我就不知道如何使用ResourceConfig
PS我也不知道如何确保禁用所有包扫描?您也可以使用
ResourceConfig\35; 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
(您可以在类中找到此属性和其他属性):
您也可以使用
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
(您可以在类中找到此属性和其他属性):
作品谢谢:)只想补充一点,我不需要注册(RestService.class)代码>用于@injectrestservice RestService
在RestServlet
中工作<代码>寄存器(新RestBinder())代码>和寄存器(RestServlet.class)代码>已经足够了。谢谢:)只想补充一点,我不需要注册(RestService.class)代码>用于@injectrestservice RestService
在RestServlet
中工作<代码>寄存器(新RestBinder())代码>和寄存器(RestServlet.class)代码>足够了。
public class RestApplication extends ResourceConfig {
public RestApplication() {
register(new RestBinder());
register(RestServlet.class);
register(RestService.class);
property(ServerProperties.METAINF_SERVICES_LOOKUP_DISABLE, true);
}
}