Spring 2.5.5和带有自动连线的运动衫
我正在尝试将jersey集成到现有的Spring应用程序(Spring2.5.5)。 Jersey工作正常,但是当我自动连接现有的Springbean时,对象为null。 下面是我的web.xmlSpring 2.5.5和带有自动连线的运动衫,spring,jersey,autowired,Spring,Jersey,Autowired,我正在尝试将jersey集成到现有的Spring应用程序(Spring2.5.5)。 Jersey工作正常,但是当我自动连接现有的Springbean时,对象为null。 下面是我的web.xml <servlet> <servlet-name>fs3web</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</serv
<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>
启动tomcat时,在日志中看不到预期的行:
INFO:注册Springbean,您好,类型。。。。。作为根资源类
当我调用我的服务时,testPojo对象为null
然而,在将其集成到我现有的项目之前,我做了一个示例jersey+spring应用程序,它工作得非常好。我能够在日志中看到“注册Springbean”行
非常感谢您的帮助。试试这个,它可能会更简单: 通过
web.xml
加载弹簧,如下所示为正常弹簧配置:
<servlet>
<servlet-name>project-spring</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:project-spring-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>project-spring</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>
好了。
Spring已经配置了Jersey的所有依赖注入 尽管Spring3.2.2在几个月前发布(甚至更新的版本即将发布或可能已经发布),但您真的对使用这个相当旧的Spring版本(2.5.5)感兴趣吗?在今后的工作中,您可能会面临严重的问题。Spring上下文在哪里初始化,如何初始化?我在
web.xml
@Lion中没有看到对它的引用,我们尝试升级到Spring3.2,但是我们遇到了一些问题。由于这是一个关键应用程序,我们目前不打算升级到Spring3.2.2。因此,现在需要使用2.5.5。@Tichodroma应用程序名为fs3web,因此fs3web-servlet.xml是加载的应用程序上下文。spring应用程序本身工作正常。
@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 {
}
<servlet>
<servlet-name>project-spring</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:project-spring-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>project-spring</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>
@ApplicationPath("/rest")
public class ResourceLoader extends Application
{
/* (non-Javadoc)
* @see javax.ws.rs.core.Application#getClasses()
*/
@Override
public Set<Class<?>> getClasses()
{
Set<Class<?>> classes = new HashSet<Class<?>>();
loadResourceClasses(classes);
return classes;
}
private void loadResourceClasses(Set<Class<?>> classes)
{
classes.add(StudentResource.class);
}
}
@Path("student")
class StudentResource
{
private StudentService studentService;
StudentResource(@Context ServletContext servletContext)
{
ApplicationContext applicationContext = WebApplicationContextUtils.getWebApplicationContext(servletContext);
this.transactionService = applicationContext.getBean(StudentService .class);
}
}