【问题标题】:Java ~ Service Layer failed to call DAO layer and throw NullPointerExceptionJava~Service层调用DAO层失败,抛出NullPointerException
【发布时间】:2013-12-10 08:50:34
【问题描述】:

我是否错误地实现了调用 DAO 层的方式?断点不会在 DAO 方法内命中,异常抛出仅提及 NullPointerException.Kindly 建议。谢谢你

服务层: 公共类 BookServiceImpl {

    private static BookServiceImpl myInstance;
    private BookDAO dao;

    public static BookServiceImpl getInstance() {
        if (myInstance == null) {
            myInstance = new BookServiceImpl();
        }
        return myInstance;
    }

    public List<Book> getBookList(BookDTO dto) {
        return dao.getBookList(dto);
    }

}

DAO 层 公共类 BookDAO { 私人 BookDAO () { sqlService = Services.get(SqlService.class); }

    public static BookDAO getInstance() {
        if (myInstance == null) {
            myInstance = new BookDAO ();
        }
        return myInstance;
    }

}

【问题讨论】:

    标签: java


    【解决方案1】:

    看起来您从未将值设置为:

    private BookDAO dao;
    

    BookServiceImpl 中,导致此行:

    return dao.getBookList(dto);
    

    将 NPE 抛出为 dao 为空。

    您需要在访问它之前对其进行实例化。

    【讨论】:

    • 是的,你是对的...我忘记了...继续思考发生了什么...哈哈...无论如何...谢谢兄弟...
    【解决方案2】:

    BookServiceImpl

    private BookDAO dao;  // not initialize 
    

    然后你在打电话

    return dao.getBookList(dto);  // here dao is null.
    

    然后你会得到NullPointerException

    【讨论】:

    • 是的,你是对的...我忘记了...继续思考发生了什么...哈哈...无论如何...谢谢兄弟...
    猜你喜欢
    • 2012-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-25
    • 1970-01-01
    • 1970-01-01
    • 2016-11-28
    相关资源
    最近更新 更多