jdbcTemplate 为空并抛出空指针异常[重复]

2023-12-19

我是春天的新手。我正在尝试使用 Spring Web MVC 开发 REST API。我正在尝试使用 JdbcTemplate 从我的数据库(MySQL)中获取一些数据。但是当我在服务器中运行代码时我得到500- Internal Server Error堆栈跟踪显示java.lang.NullPointerException。当我尝试调试代码时,我发现 jdbcTemplate 变量具有空值。我已经尝试了网络中提供的所有解决方案,但仍然遇到相同的错误。

这是我的应用程序上下文.xml file

    <context:component-scan base-package="com.cinema.repository" />


    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="dataSource" />
    </bean>
    <bean id="userDao" class="com.cinema.repository.UserDaoImpl">
        <property name="jdbcTemplate" ref="jdbcTemplate" />
    </bean>
    <bean id="dataSource"
    class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="${jdbc.driverClassName}" />
        <property name="url" value="${jdbc.url}" />
        <property name="username" value="${jdbc.username}" />
        <property name="password" value="${jdbc.password}" />
    </bean>

    <context:property-placeholder location="/WEB-INF/jdbc.properties" />

My UserDaoImpl.java看起来是:

public class UserDaoImpl implements UserDao {
private JdbcTemplate jdbcTemplate;

public JdbcTemplate getJdbcTemplate() {
    return jdbcTemplate;
}
@Autowired
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
    this.jdbcTemplate = jdbcTemplate;
}

public User getUser(int userId) {
    String sql ="SELECT * FROM user_tbl WHERE user_id = ?";
    return this.jdbcTemplate.queryForObject(sql,new Object[]{new Integer(userId)}, new UserMapper() );
}

private static final class UserMapper implements RowMapper<User>{
    public User mapRow(ResultSet rs, int rowCount) throws SQLException {
        User u = new User();
        u.setUserId(rs.getInt("user_id"));
        u.setUserName(rs.getString("username"));
        u.setPassword(rs.getString("password"));
        u.setEmailId(rs.getString("email"));
        u.setRole(rs.getString("role"));
        return u;
    }
  }
}

我的控制器类是用户控制器.java:

@RestController
@RequestMapping(value="/user")
public class UserController {
    @RequestMapping(method = RequestMethod.GET, value="/{userId}", produces = {MediaType.APPLICATION_JSON_VALUE})
    ResponseEntity<User> getUser(@PathVariable int userId){
        UserDaoImpl user = new UserDaoImpl();
        User u = new User();
        u=user.getUser(userId);
        return new ResponseEntity<User>(u, HttpStatus.OK);
    }
}

我在运行应用程序时得到以下堆栈跟踪:

10-Feb-2016 02:50:28.165 SEVERE [tomcat-http--5] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [spring] in context with path [/booking] threw exception [Request processing failed; nested exception is java.lang.NullPointerException] with root cause
java.lang.NullPointerException
at com.cinema.repository.UserDaoImpl.getUser(UserDaoImpl.java:31)
at com.cinema.web.UserController.getUser(UserController.java:21)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:222)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:814)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:737)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:969)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:860)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:845)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:673)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:277)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)

请告诉我我在这里做错了什么。我已经被这个问题困扰一周了,但仍然无法使我的代码工作。提前致谢。


在您的控制器中,您正在创建一个新的 UserDaoImpl :

@RequestMapping(method = RequestMethod.GET, value="/{userId}", produces = {MediaType.APPLICATION_JSON_VALUE})
ResponseEntity<User> getUser(@PathVariable int userId){
    UserDaoImpl user = new UserDaoImpl(); // <-- HERE
    User u = new User();
    u=user.getUser(userId);
    return new ResponseEntity<User>(u, HttpStatus.OK);
}

这个 UserDaoImpl 不是由 spring 管理的,也不是配置/自动装配的。 您应该在控制器中注入 xml 中配置的 UserDao 实例:

  @Autowired
  private UserDao userDao;

  @RequestMapping(method = RequestMethod.GET, value="/{userId}", produces = {MediaType.APPLICATION_JSON_VALUE})
ResponseEntity<User> getUser(@PathVariable int userId){
    User u = userDao.getUser(userId);
    return new ResponseEntity<User>(u, HttpStatus.OK);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

jdbcTemplate 为空并抛出空指针异常[重复] 的相关文章

随机推荐

  • 确保 URI 有效

    我试图确保传递给我的 go 程序的 URL 是有效的 但是 我似乎不知道该怎么做 我以为我可以直接喂它url Parse 但这似乎不起作用 package main import fmt net url func main url err
  • 用于获取合并请求中已更改文件列表的 Azure Repos REST API

    Goal 每当拉取请求获得批准并且审阅者在 azure 存储库中完成 合并 拉取请求时 我想确定该合并请求中的文件列表 根据文件扩展名 我必须触发相应的构建管道 Issue 截至目前 从 azure devOps 门户来看这似乎是不可能的
  • Cassandra 没有地理空间支持是否有原因?

    由于 Cassandra 基于 Dynamo 论文 分布式 自平衡哈希表 BigTable 并且有一些空间索引非常适合该范例 quadkey http msdn microsoft com en us library bb259689 as
  • 从日期数组中找出剩余天数[重复]

    这个问题在这里已经有答案了 我有一个如下所示的数组 combinedBirthdates 03 12 2013 03 12 2013 08 13 1990 12 09 1989 02 06 09 08 03 02 1990 08 22 19
  • 线程“main”中的异常 java.lang.ArrayIndexOutOfBoundsException: 0

    我是学习java的新手 在遵循书中的教程时 我收到了此错误 Exception in thread main java lang ArrayIndexOutOfBoundsException 0 我尝试从网上进行研究以了解有关该错误的更多信
  • 当用户点击 div 外部时如何隐藏 Backbone 中的 div?

    我在 Backbone 中有一个包含内部 div 的视图 我想当用户单击 div 外部时隐藏 div 我不知道如何在视图内设置一个事件 显示 click NOT inner div removeDiv 关于如何执行此操作有什么建议吗 通常的
  • Twig:如何在自定义函数中手动转义?

    我编写了自己的 Twig 函数来输出 HTML 所以我有is safe set to html这样 Twig 就知道不要逃避我的函数的输出 但是 我的函数需要参数 参数之一直接放入输出中 我想在输出它之前转义它 所以看来我只需要能够在输出之
  • Jquery从左到右滑动使div在幻灯片上向上跳跃

    我正在尝试创建一种效果 当单击链接时 它会使初始 div 向左滑动并显示向左滑动的第二个 div 当从第二个 div 单击链接时 div 与第一个 div 一起向右滑动div 也向右滑动 到目前为止 这是我的代码 HTML div a hr
  • 方向改变后移动视口高度

    我正在将一个侦听器附加到orientationchange https developer mozilla org en US docs Web Events orientationchange event window addEventL
  • 在Python 2.5中解码未知unicoding编码的最佳方法[重复]

    这个问题在这里已经有答案了 我完全明白了吗 不管怎样 我正在解析很多 html 但我并不总是知道它的编码是什么 令人惊讶的数字谎言 下面的代码很容易显示我到目前为止所做的事情 但我确信有更好的方法 我们将非常感谢您的建议 import lo
  • 使用Python 2.7.11需要tensorflow会发生ImportError

    I tried pip install tensorflow在 OS X El Capitan 上 它成功了 但是 如果我尝试导入tensorflow 则会发生ImportError 当你知道的时候请告诉我 gt gt gt import
  • Active Directory 本地管理器

    我需要实现一个 Active Directory 本地 管理器 用户可以在其中执行所有任务 例如添加用户 删除用户 分配许可证和分配组等 用户有用户名 密码和域控制器名称 因此他只需登录我的应用程序并管理一切 实际上 物理地安排客户端属性会
  • 轻量级java事务管理[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我目前正在为主要针对智能手机的回合制持久世界游戏开发游戏服务器 并且我目前正在开始实现持久层 并且我正在寻找一些提示 建议 我最初计划使用
  • 如何使用坐标点在图像上创建热图?

    我有一张尺寸为 1024 x 1360 的病理图像 我有一些区域和坐标点的概率值 如何使用图像上的坐标点和概率值编写热图生成代码 下面给出了概率值 csv 文件格式的详细信息 任何帮助将不胜感激 Edit CSV 文件格式下载 csv 文件
  • 如何在 Rails 3.1 应用程序中完全禁用 CoffeeScript?

    当我生成一个新的控制器时 Rails 也会生成一个 js coffee控制器的文件也是如此 因为我不使用 CoffeeScript 所以我想要 Rails 来生成 js给我的文件 注释掉就足够了coffee railsgem 在 Rails
  • C 程序中的命令行参数?

    如何读取C 中的命令行参数 例如 在 test help or test build 如何访问 build 或 help 您的参数位于 argv 中 int main int argc char argv 如果你打印 argv 的内容 ar
  • 如何在 TypeScript 中导入 package.json?

    我正在尝试在 TypeScript 中导入我的 package json 文件 但它似乎不起作用 具体来说 我只是尝试导入它 以便可以访问日志语句的名称和版本属性 就像是 import as pjson from package json
  • ES6 * Typescript:找不到命名空间

    Node7 4 0 ES6 Typescript 2 1 5 WebStorm 2016 3 在线上 导出默认的heroRoutes router I get TS2503 找不到命名空间 heroRoutes 创建它并 init 之后 有
  • 点击后更改(或改回)传单图标

    我已经获得了单击时更改的图标 但是当单击新图标时 我需要将其更改回原始图标 而不是保留新图标 例如 假设我所有的图标都是蓝色的 当我点击一个图标时 我希望它变成红色图标 然后 当我单击新图标时 我希望之前单击的图标变回蓝色 我可以让它与鼠标
  • jdbcTemplate 为空并抛出空指针异常[重复]

    这个问题在这里已经有答案了 我是春天的新手 我正在尝试使用 Spring Web MVC 开发 REST API 我正在尝试使用 JdbcTemplate 从我的数据库 MySQL 中获取一些数据 但是当我在服务器中运行代码时我得到500