码头+;泽西岛+;没有web.xml的Spring DI

码头+;泽西岛+;没有web.xml的Spring DI,spring,servlets,jersey,jetty,jax-rs,Spring,Servlets,Jersey,Jetty,Jax Rs,我正在尝试使用嵌入式Jetty 9服务器和Jersey(2.18)servlet编写一个小型REST应用程序。我想使用Spring4进行依赖注入,但在Jersey资源中注入SpringBean时遇到了问题。 我以编程方式配置服务器,因此没有web.xml 我的资源配置是: public class ApplicationConfig extends ResourceConfig { public static final String ROOT_PACKAGE = "com.example

我正在尝试使用嵌入式Jetty 9服务器和Jersey(2.18)servlet编写一个小型REST应用程序。我想使用Spring4进行依赖注入,但在Jersey资源中注入SpringBean时遇到了问题。 我以编程方式配置服务器,因此没有web.xml

我的资源配置是:

public class ApplicationConfig extends ResourceConfig {

  public static final String ROOT_PACKAGE = "com.example";

  public ApplicationConfig() {
    packages(true, ROOT_PACKAGE);

    // Features
    register(JacksonFeature.class);

    property(METAINF_SERVICES_LOOKUP_DISABLE, true);

  }
}
主类(我在其中配置和启动Jetty)是:

弹簧配置为:

@Configuration
@ComponentScan("com.example")
public class ProductionSpringConfig {}
我在扫描包中添加了一个简单的Spring组件,我可以看到它在服务器启动时正确实例化:

@Component
public class BeanExample {

  public void doSomething(){
    System.out.println("HelloWorld");
  }
}
但是,当我尝试将其注入Jersey资源时,它总是空的。我尝试使用自动连线和注入注释。 我很确定我误解了什么,我没有正确配置所有的部件


有人能帮忙吗?

我看不到您在这里注册
SpringComponentProvider
,因为您是以SE方式注册的,您可能需要自己注册。您的示例对我很有用。您是否有一个小的Github项目可以共享,以演示问题?给你。我想可能是由于
METAINF\u服务\u查找\u禁用
导致找不到
SpringComponentProvider
,但即使使用该属性,它似乎仍能工作。@peeskillet我查看了您在github上发布的代码,我注意到您将jersey-spring3作为依赖项的一部分导入。我也这么做了,现在它工作得很好。感谢您的帮助我在这里没有看到您注册
SpringComponentProvider
,因为您是以SE方式注册的,您可能需要自己注册。您的示例对我很有用。您是否有一个小的Github项目可以共享,以演示问题?给你。我想可能是由于
METAINF\u服务\u查找\u禁用
导致找不到
SpringComponentProvider
,但即使使用该属性,它似乎仍能工作。@peeskillet我查看了您在github上发布的代码,我注意到您将jersey-spring3作为依赖项的一部分导入。我也这么做了,现在它工作得很好。感谢您的帮助我在这里没有看到您注册
SpringComponentProvider
,因为您是以SE方式注册的,您可能需要自己注册。您的示例对我很有用。您是否有一个小的Github项目可以共享,以演示问题?给你。我想可能是由于
METAINF\u服务\u查找\u禁用
导致找不到
SpringComponentProvider
,但即使使用该属性,它似乎仍能工作。@peeskillet我查看了您在github上发布的代码,我注意到您将jersey-spring3作为依赖项的一部分导入。我也这么做了,现在它工作得很好。谢谢你的帮助
@Component
public class BeanExample {

  public void doSomething(){
    System.out.println("HelloWorld");
  }
}