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);
    }
}