2016-08-25 4 views
0

Я пытаюсь @autowire мой ресурс ресурса jersey с моим интерфейсом mapper, и он дает исключение исключений для пустой указатель, но @autowire отлично работает в моем диспетчерском контроллере. Я новичок в Spring mvc, и я просто хочу, чтобы @autowire класс ресурса jersey с моим интерфейсом mapper.@Autowire, дающий исключение нулевого указателя в классе ресурса jersey

Код контроллера

@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"; 
    } 
} 

Mapper интерфейс

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

Spring диспетчеру 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

Я предполагаю, что вы не настраивали Джерси делегировать жизненный цикл объекта в Spring, используя jersey-spring. Если это не было сделано явно, Джерси сам будет контролировать жизненный цикл, а это значит, что именно Джерси создаст ваш класс ресурсов.

+0

эта ссылка не помогла мне ... какие изменения мне нужно сделать в web.xml, чтобы она работала с трикотажем, а также –

+0

Ключевым моментом здесь является то, что для Джерси играть приятно с весной, вам нужно настроить его по-разному, более конкретно, используя джерси-весну. Быстрая реклама Google по этому вопросу отобразит много хитов. – marthursson