yiyideJayce 2012-03-23 15:56
浏览 247
已采纳

SSH依赖注入,接口,丢失实现类的方法的问题

涉及的类  :ClientDaoImpl
涉及的接口:ClientDao
类ClientDaoImpl extends 类BaseHibernateDaoSupport ,在ClientDaoImpl 类中重写了类
BaseHibernateDaoSupport的findByPage()这个方法

然后service包中:
public class ClientManagerImpl implements ClientManager
{
    private ClientDao clientDao; (*)

    public void xxx()
    {
        clientDao.findByPage();//这里报错,因为找不到方法findByPage()
    }
  

把(*)号处代码改为private ClientDaoImpl clientDao; 就不会报错了,原因是findByPage是重

写的类BaseHibernateDaoSupport的,所以在接口ClientDao没有此方法,进而报错。

我这么用的目的是想在service层中调用分页查询的方法,用的SSH框架,要想用到findByPage()方法又,难道非要在ClientManagerImpl类new 一个ClientDaoImpl 类吗,这不就违背了依赖注入了吗,请问有什么解决办法呢?

 

  • 写回答

2条回答 默认 最新

  • jkxydp 2012-03-23 16:28
    关注

    还有一个解决办法就是,因为已知你注入的类是:ClientDaoImpl,所以可以在调用的时候进行强制类型转换,但是不建议这样用:
    [code="java"]public class ClientManagerImpl implements ClientManager
    {
    private ClientDao clientDao; (*)

    public void xxx()
    {
        [b]((ClientDaoImpl)clientDao).[/b]findByPage();//这里报错,因为找不到方法findByPage()
    }
    

    }[/code]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥35 平滑拟合曲线该如何生成
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了
  • ¥15 链式存储应该如何解决
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站