2016-08-25 43 views
0

我正在尝试@autowire我的球衣资源类与我的映射器接口,它给予空指针注释异常,但@autowire在我的调度器控制器中正常工作。我是新来的春天MVC,我只想要一个方法来@autowire我的球衣资源类与我的映射器界面。@Outowire在球衣资源类中给出空指针异常

控制器代码

@Controller 
public class EmployController { 
    @Autowired 
    EmployMapper employMapper; 

    @RequestMapping("test") 
    public ModelAndView reviewspage() 
    { 
     employMapper.updateMytable("SpringController"); 
      ModelAndView modelAndView = new ModelAndView("test"); 
      return modelAndView; 
    } 
} 

球衣资源类

@Path("/employees") 
@Repository 
public class MyResource { 
    @Autowired 
    EmployMapper employMapper; 

    @GET 
    @Produces(MediaType.TEXT_PLAIN) 
    public String getEmployees(){ 
     employMapper.updateMytable("WebAPiController"); 
     return "Successfuly done"; 
    } 
} 

映射器接口

public interface EmployMapper { 
    public int finduser(@Param("MName") String MName,@Param("password") String password); 
    public int updateMytable(@Param("name") String name); 
} 

春季调度XML

<beans 
    <mvc:annotation-driven /> 
    <context:component-scan base-package="com.controller"/> 
    <bean id = "ViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
     <property name="prefix" 
     value="/WEB-INF/" /> 
     <property name="suffix" 
     value=".jsp" /> 
    </bean> 

    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
    <property name="driverClassName" value="com.mysql.jdbc.Driver" /> 
    <property name="url" value="jdbc:mysql://localhost/employtrackingsystem"/> 
    <property name="username" value="adminXuMPZTn" /> 
    <property name="password" value="IMhzT-AJE47P" /> 
    </bean> 


    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> 
    <property name="dataSource" ref="dataSource" /> 
    <property name="mapperLocations" value="classpath*:*mappers/EmployMapper.xml"/> 

</bean> 


    <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate"> 
     <constructor-arg index="0" ref="sqlSessionFactory" /> 
</bean> 

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> 
    <property name="basePackage" value="com.mappers"/> 
</bean> 
</beans> 

的web.xml

<?xml version="1.0" encoding="UTF-8"?> 

<web-app version="3.0" 
     xmlns="http://java.sun.com/xml/ns/javaee" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
     metadata-complete="false"> 

     <servlet> 
    <servlet-name>spring-dispatcher</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    </servlet> 

    <servlet-mapping> 
    <servlet-name>spring-dispatcher</servlet-name> 
    <url-pattern>/</url-pattern> 
    </servlet-mapping> 



      <servlet> 
     <servlet-name>Jersey Web Application</servlet-name> 
     <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> 
     <init-param> 
      <param-name>jersey.config.server.provider.packages</param-name> 
      <param-value>com.resources</param-value> 
     </init-param> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>Jersey Web Application</servlet-name> 
     <url-pattern>/webapi/*</url-pattern> 
    </servlet-mapping> 
    <context-param> 
    <param-name>resteasy.scan</param-name> 
    <param-value>false</param-value> 
</context-param> 
<context-param> 
    <param-name>resteasy.scan.providers</param-name> 
    <param-value>false</param-value> 
</context-param> 
<context-param> 
    <param-name>resteasy.scan.resources</param-name> 
    <param-value>false</param-value> 
</context-param> 


</web-app> 
+0

分享你的web.xml – Vaibs

+0

@Vaibs我已经添加了我的web.xml以上好心检查它 –

+0

看到我的评论如下:你的web.xml不指示泽西使用Spring。 – marthursson

回答

1

我的猜测是,你还没有配置新泽西委托对象生命周期去春来,使用jersey-spring。如果没有明确地完成,Jersey本身将控制生命周期,这意味着Jersey将实例化你的资源类。

+0

该链接没有帮助我...我需要在web.xml中做什么更改,以使其与球衣一起工作 –

+0

关键在于泽西与Spring打起精彩,你需要配置它不同地,更具体地使用球衣弹簧。关于这个问题的快速谷歌将提供大量的点击。 – marthursson