1

我得到了NullPointerException,我不知道我的错误在哪里。

错误在selectByExample函数中。代码是:

package com.service.test;

@Service 
public class TestService {
[...]
@Autowired
private TestMapper TestMapper;
[...]

public List<Short> test(){
    List<Short> lista = new ArrayList<Short>();

    testExample me = new testExample();
    me.or().andTestEqualTo(1);
    List<test> listTest = TestMapper.selectByExample(me); //line 81

    for(int i=0; i<listTest.size(); i++){
        lista.add(listTest.get(i).getNuovoDb());
    }

    return lista;
}

控制器.java

    TestService ms = new TestService();
    List<Short> listTest = ms.sediMigrate(); //line 46

applicationContext 如下:

       <!-- enable autowire -->
    <context:annotation-config />
    <context:component-scan base-package="com.service.test"/>
[...]


    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.test.**"/>
        <property name="sqlSessionFactoryBeanName" value="exSqlSessionFactory"/>
    </bean>

这里有错误:

[11/07/14 11.19.33:848 CEST] 0000004f servlet E com.ibm.ws.webcontainer.servlet.ServletWrapper service SRVE0068E: Generata eccezione non rilevata in uno dei metodi di servizio del servlet dispatcher nell'applicazione TestEAR。Creata eccezione:org.springframework.web.util.NestedServletException:请求处理失败;嵌套异常是 java.lang.NullPointerException 在 org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:973) 在 org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:863) 在 javax.servlet .http.HttpServlet.service(HttpServlet.java:738) 在 org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:831) 在com.ibm.ws.webcontainer.servlet。

[11/07/14 11.19.33:856 CEST] 0000004f FfdcProvider W com.ibm.ws.ffdc.impl.FfdcProvider 日志事件 FFDC1003I:C:\Program Files\IBM\WebSphere\AppServer\profiles\AppSrv01\ 中的 Emesso eventto FFDC日志\ffdc\server1_5e0b5e0b_14.07.11_11.19.33.8537970037945028520402.txt com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest() 309 [11/07/14 11.19.33:857 CEST] 0000004f webapp. ws.webcontainer.webapp.WebApp logServletError SRVE0293E: [Errore servlet]-[dispatcher]: java.lang.NullPointerException at com.service.test.TestService.test(TestService.java:81) at com.test.controller.ReturnPage( controller.java:46) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:48) 在 sun.reflect.DelegatingMethodAccessorImpl。在 org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:175) 在 org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:175) 在 java.lang.reflect.Method.invoke(Method.java:600) 调用(DelegatingMethodAccessorImpl.java:25) .springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:446) 在 org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:434) 在 org.springframework.web .servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:938) 在 org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:870) 在 org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961 ) 在 org.springframework.web.servlet。FrameworkServlet.doPost(FrameworkServlet.java:863) at javax.servlet.http.HttpServlet.service(HttpServlet.java:738) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837) at javax.servlet .http.HttpServlet.service(HttpServlet.java:831) 在 com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1657) 在 com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper .java:939) 在 com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:502) 在 com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:181) 在 com。 ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3935) 在 com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:276) 在 com.ibm.ws.webcontainer。WebContainer.handleRequest(WebContainer.java:931) 在 com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1592) 在 com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:186)在 com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:452) 在 com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:511)在 com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:305) 在 com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:83)在 com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165) 在 com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217) 在 com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138) 在 com.ibm.io.async.ResultHandler 的 com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161) .complete(ResultHandler.java:204) 在 com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775) 在 com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905) 在 com .ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1613)ws.util.ThreadPool$Worker.run(ThreadPool.java:1613)ws.util.ThreadPool$Worker.run(ThreadPool.java:1613)

4

1 回答 1

2

当你使用 Spring 时,你应该避免显式地创建你的 bean(使用new操作符)——框架应该为你做这件事。并且 bean 实例应该已经在 Spring 上下文中。如果你实例化你的服务 beannew什么都不会自动装配。这就是为什么你将拥有null而不是你的映射器实例。

请查看有关 Spring 应用程序中依赖注入和 bean 生命周期的 Spring 文档http://docs.spring.io/spring/docs/3.0.x/reference/beans.html#beans-factory-collaborators

更新:

自动装配TestService到您的控制器中可能会解决您的问题。

@Controller
public class Controller {
    @Autowired private TestService testService;
    ...
    @RequestMapping
    public String returnPage() {
        ...
        testService.sediMigrate(); 
        ...
    }
}
于 2014-07-11T10:09:49.377 回答