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 类吗,这不就违背了依赖注入了吗,请问有什么解决办法呢?

 

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

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

}[/code]

ClientDaoImpl 这个类实现的是ClientDao接口吧
你要在实现类中新增方法,肯定要到DAO层的接口中新增方法findByPage的声明。