我正在尝试将球衣集成到现有的 Spring 应用程序(Spring 2.5.5)中。Jersey 工作正常,但是当我 AutoWire 现有的 spring bean 时,该对象为空。下面是我的 web.xml
<servlet>
<servlet-name>fs3web</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>jersey-servlet</servlet-name>
<servlet-class>com.sun.jersey.spi.spring.container.servlet.SpringServlet</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.fl.fs3.api;org.codehaus.jackson.jaxrs</param-value>
</init-param>
<init-param>
<param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>fs3web</servlet-name>
<url-pattern>/fs3/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>jersey-servlet</servlet-name>
<url-pattern>/api/*</url-pattern>
</servlet-mapping>
而且,这里是我的应用程序上下文 xml(显然这并不完整,因为这是一个巨大的应用程序,所以有更多的 bean 定义): TestPojo 是我的 bean 我想自动装配到我的球衣资源。
<context:annotation-config />
<aop:aspectj-autoproxy/>
<context:component-scan base-package="com.fl.fs3.api,com.fl.fs3.integration.*.web"/>
我的球衣资源类和 POJO 类都在包中com.fl.fs3.api
@Component
@Path("/v1/site")
public class SitesApiControllerV1 {
@Autowired TestPojo testPojo;
@GET
@Path("/{folderName}")
@Produces(MediaType.APPLICATION_JSON)
public Response getSite(@PathParam("folderName") String folderName) {
System.out.println("pojo obj:" + testPojo);
return Response.ok("info for " + folderName).build();
}
}
@Component
public class TestPojo {
}
当我启动我的 tomcat 时,我没有在日志中看到预期的行:
INFO: Registering Spring bean, hello, of type ..... as a root resource class
当我调用我的服务/v1/site/xyz
时,testPojo 对象为空。
但是,在将其集成到我现有的项目之前,我做了一个示例 jersey+spring 应用程序,它运行良好。我能够在日志中看到“注册 Spring bean”行。
任何帮助表示赞赏。