使用JerseyTest和Grizzly测试基于spring的rest服务:依赖注入不起作用

使用JerseyTest和Grizzly测试基于spring的rest服务:依赖注入不起作用,spring,jersey,Spring,Jersey,以下是我的休息: @Path("/personService") @Service public class PersonRestService { Logger logger = LoggerFactory.getLogger(PersonRestService.class); @Autowired private PersonService personService; @GET @Path("{id}") @Produces({ MediaTyp

以下是我的休息:

@Path("/personService")    
@Service
public class PersonRestService {
    Logger logger = LoggerFactory.getLogger(PersonRestService.class);

    @Autowired
    private PersonService personService;

    @GET
@Path("{id}")
@Produces({ MediaType.APPLICATION_JSON })
public Person getPersonByID(@PathParam("id") String id) {
    logger.debug("getItemByID with id {}", id);
    return personService.getPersonById(id);
}
下面是单元测试:

   public class PersonServiceRestTest extends JerseyTest {

     public PersonServiceRestTest() throws Exception {
        super(new WebAppDescriptor.Builder("com.intesasanpaolo.web.rest.service").
                contextPath("test")
                .contextParam("contextConfigLocation", "classpath*:application-context/web-test-context.xml")
                .contextListenerClass(ContextLoaderListener.class)
                .build());
     }


@Test
public void testGetPerson() {
    Client client = Client.create();

    WebResource webResource = client.resource("http://localhost:9998/test/personService/1");

    ClientResponse response = webResource.type(MediaType.APPLICATION_JSON).get(ClientResponse.class);
    System.out.println(response);

}
}

当我运行测试时,我在personService.getPersonByIdid上接收到异常,因为personService不是自动连接的。 grizzly创建的所有rest服务似乎都不共享上面定义的spring上下文:

INFO: Scanning for root resource and provider classes in the packages:
  com.intesasanpaolo.web.rest.service
10-feb-2014 19.10.01 com.sun.jersey.api.core.ScanningResourceConfig logClasses
INFO: Root resource classes found:
  class com.intesasanpaolo.web.rest.service.PersonRestService
  class com.intesasanpaolo.web.rest.service.MyResource
我读了很多讨论,但仍然没有解决方案。 有什么想法吗? 亲切的问候。 马西莫

好的,我发现了问题。 未共享上下文,因为未使用SpringServlet配置WebAppDescriptor

工作配置如下所示

super(new WebAppDescriptor.Builder("com.intesasanpaolo.web.rest.service")
                .contextPath("test")
                .contextParam("contextConfigLocation", "classpath*:application-context/web-test-context.xml")
                .servletClass(SpringServlet.class)
                .initParam("com.sun.jersey.api.json.POJOMappingFeature", "true")
                .contextListenerClass(ContextLoaderListener.class)
                .build());
希望这能帮助别人; 马克斯