【问题标题】:MVC Spring Implementation - error: java.lang.NullPointerExceptionMVC Spring 实现 - 错误:java.lang.NullPointerException
【发布时间】:2014-02-23 06:21:32
【问题描述】:

我有一个 MVC Spring 控制器,在 Imp 文件中,我有:

import com.ish.system.dao.UserDAO;

public class CustomImpl implements CustomService {

UserDAO   userDAO = null;

public UserDAO getUserDAO() {
  return userDAO;
}

public void setUserDAO(UserDAO userDAO) {
  this.userDAO = userDAO;
}

public String ServiceType(userId) {

User user = userDAO.findById(userId);

...

这是控制台中的错误:

SEVERE: Servlet.service() for servlet dispatcherServlet threw exception
java.lang.NullPointerException
    at com.ish.smdb.service.impl.CustomImpl.ServiceType(CustomImpl.java:142)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:309)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)

这里是控制器:

@RequestMapping(value="/ServiceType", method=RequestMethod.GET)
    public @ResponseBody String ServiceType(

            Locale locale,
            Model model) {
        String result = custom.ServiceType();

    return result;
}

这是豆子:

<bean id="Custom" parent="baseTransactionProxy"> 
  <property name="target"> 
    <bean id="CustomImpl" class="com.is.sm.service.impl.CustomImpl"> 
      <property name="userDAO" ref="UserDAO" /> 
    </bean> 
  </property> 
</bean>

确定 userDAO 为空。但我没有找到共鸣。我错了什么?

【问题讨论】:

  • 你能发布你的完整堆栈跟踪吗?
  • 你能告诉我那是什么吗?我只是通过输出打印来跟踪代码。
  • 您能否发布您的控制器代码,您如何调用 ServiceType 以及如何初始化 userDAO?
  • 上面说的,你肯定说 userDAO 是空的,那是你的错误。它是空的..你的类是如何初始化的?肯定 userDAO 必须设置在某处或注入。
  • 我刚刚发布了我的控制器。你能告诉我如何初始化它吗?

标签: java spring-mvc


【解决方案1】:

CustomImpl bean 对 UserDAO 有依赖,所以必须将 UserDAO bean 注入到 CustomImpl bean, 请发布您的 xml 配置文件,您已在其中定义了 bean。

更新:

这里有一个解决方案,可以使用spring注解进行注入:

在你的 UserDAOImpl calss(UserDAO interface implementatoin) 中使用:

@Repository(value = "userDAO")
public class UserDAOImpl implements UserDAO {....}

然后在您的 CustomImpl 类中:

@Autowired
UserDAO userDAO ;

【讨论】:

  • 这是我定义的 bean:
猜你喜欢
  • 2012-09-16
  • 2016-08-02
  • 1970-01-01
  • 1970-01-01
  • 2013-06-22
  • 1970-01-01
  • 1970-01-01
  • 2013-12-13
  • 2022-01-21
相关资源
最近更新 更多