2013-08-01 58 views
1

我正在使用Jersey-Spring集成来公开业务层服务。
在我的web.xml我使用的SpringServlet:Jersey-Spring @Autowired无法正常工作

com.sun.jersey.spi.spring.container.servlet.SpringServlet 

我的业务层是@Component注解,所以我必须通过Spring的注解配置前提是S @Service“使用@Repository S”。 存储库的提供给服务的通过@Autowired注释。

如果我使用一个通过服务用我的前端MVC类everithig顺利,但如果我用它通过泽西我得到的资料库对象的NullPointerException

我使用的版本(基于Maven)是:

  • 春(和扩展):3.1.3.RELEASE
  • 泽西(和扩展):1.17

回答

0

有办法解决这个问题,使用您提问中提到的相同版本,

如果需要生病提第二种方式中,第一种方式是通过加载web.xml中 SRING像图所示为通常弹簧confifuration:

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

There'r你去春天已经配置了所有的依赖与泽西岛的观看!