我有一个抽象类PageDao
如:  public abstract class PageDao<T> extends HibernateDaoSupport implements ICurrencyDao {
         他有个抽象方法
         public abstract int rowCount();
}然后我的biz层的 NewsInfoBiz 类
如: public class NewsInfoBiz implements IBaseNewsBiz{
         //注入了pageDao
         private ICurrencyDao pageDao = null;
//设置分页通用dao
public void setPageDao(ICurrencyDao pageDao) {
this.pageDao = pageDao;
}
//返回分页dao类
public ICurrencyDao getPageDao() {
return this.pageDao;
}         //在这里实现
         public int rowCount() {
return this.pageDao.queryRowCount_HQL("NewsEntity");
}
         //当然后面有很多的实现了IBaseNewsBiz的接口方法  在此不例出了}最后我在NewsAction 中注入此biz
         public class NewsAction extends DispatchAction{
         private IBaseNewsBiz ibnb = null;
         public void setIbnb(IBaseNewsBiz ibnb){
this.ibnb = ibnb;
}
//后面的方法省略........
}最后错误总结是
我的pageDao是没有问题可以注入biz的
但是biz就不能注入到Action中了  我知道 这样做很怪异 
但是我还是很需要这种方式的 因为我的业务然我很难改变了还有就是如果这样做的话能成功注入  是不是也不对呢  ! 这种做法?错误信息:严重: action: null
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'pageDao' defined in class path resource [applicationContext.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [pageUtil.PageDao]: Is it an abstract class?; nested exception is java.lang.InstantiationException
Caused by: org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [pageUtil.PageDao]: Is it an abstract class?; nested exception is java.lang.InstantiationException
Caused by: java.lang.InstantiationException
at sun.reflect.InstantiationExceptionConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:85)
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:61)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:757)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:722)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:386)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:249)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:155)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:246)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:160)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:291)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:352)
at org.springframework.web.struts.ContextLoaderPlugIn.createWebApplicationContext(ContextLoaderPlugIn.java:354)
at org.springframework.web.struts.ContextLoaderPlugIn.initWebApplicationContext(ContextLoaderPlugIn.java:295)
at org.springframework.web.struts.ContextLoaderPlugIn.init(ContextLoaderPlugIn.java:225)
at org.apache.struts.action.ActionServlet.initModulePlugIns(ActionServlet.java:869)
at org.apache.struts.action.ActionServlet.init(ActionServlet.java:336)
at javax.servlet.GenericServlet.init(GenericServlet.java:212)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1161)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:981)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4042)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4348)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:920)
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:883)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:492)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1138)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
at org.apache.catalina.core.StandardService.start(StandardService.java:516)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
at org.apache.catalina.startup.Catalina.start(Catalina.java:566)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
2010-1-12 2:16:12 org.apache.catalina.core.ApplicationContext log
信息: Marking servlet action as unavailable
2010-1-12 2:16:12 org.apache.catalina.core.StandardContext loadOnStartup
严重: Servlet /ProjectWeb_SSH threw load() exception
javax.servlet.UnavailableException
at org.apache.struts.action.ActionServlet.initModulePlugIns(ActionServlet.java:880)
at org.apache.struts.action.ActionServlet.init(ActionServlet.java:336)
at javax.servlet.GenericServlet.init(GenericServlet.java:212)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1161)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:981)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4042)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4348)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:920)
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:883)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:492)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1138)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
at org.apache.catalina.core.StandardService.start(StandardService.java:516)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
at org.apache.catalina.startup.Catalina.start(Catalina.java:566)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
2010-1-12 2:16:12 org.apache.coyote.http11.Http11Protocol start
信息: Starting Coyote HTTP/1.1 on http-8888
2010-1-12 2:16:12 org.apache.jk.common.ChannelSocket init
信息: JK: ajp13 listening on /0.0.0.0:8009
2010-1-12 2:16:12 org.apache.jk.server.JkMain start
信息: Jk running ID=0 time=0/31  config=null
2010-1-12 2:16:12 org.apache.catalina.startup.Catalina start
信息: Server startup in 6833 ms
人穷 给不起分了 技术求助 路过都要顶!!!  谢啦

解决方案 »

  1.   

    Could not instantiate bean class [pageUtil.PageDao]: Is it an abstract class?这句话表明直接注入了PageDao,但它是个抽象类,抽象类是不能被实例化的。要么把PageDao的Abstract去掉,要么注入PageDao的子类(非抽象类)。
      

  2.   

    犯了概念性的错误  抽象类不能被实例化·就不能被注入到bean中
    spring就是一个大型工厂··负责实例化对象··
      

  3.   

    哈哈问题解决了  !我在ICurrencyDao 中写了rowCount方法 在其他类中同样能调用  哎这么就这么傻呢
    不要管我问题解决没 路过的可以讨论啊
      

  4.   

    注入的一定是要实现类··也就是pojo 想办法整一个呗··
      

  5.   

    楼主 用继承hibernateDaoSupport  为什么不用注入hibernateTemplate的方式呢?
    用聚合代替继承··