java.lang.IllegalArgumentExceptionが「のSessionFactory」または「のHibernateTemplate」が必要です

エラーメッセージ:

ERROR StatusLogger Log4j2は、ロギング実装を見つけることができませんでした。クラスパスにlog4jのコアを追加してください。コンソールにログインするためにSimpleLoggerのを使用して...
ERROR ContextLoaderコンテキストの初期化に失敗しました
org.springframework.beans.factory.BeanCreationExceptionを:エラーは、名前で'userDaoImpl'が定義されたファイル内のBeanを作成し、[D:\のJava \ Tomcatの-8.0 \ apacheの-tomcat- 9.0.19 \ webappsに\ ROOTの\ WEB-INF \クラス\ COM \ YPF \ daoimpl \ UserDaoImpl.class]:initメソッドの呼び出しに失敗しました。ネストされた例外はjava.lang.IllegalArgumentExceptionがある:必要とされる'SessionFactoryの'または'のHibernateTemplate'
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBeanで(AbstractAutowireCapableBeanFactory.java:1704)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:583)で
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:502)で
org.springframework.beans.factoryで.support.AbstractBeanFactory.lambda $ doGetBean $ 0(AbstractBeanFactory.java:312)
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingletonで(DefaultSingletonBeanRegistry.java:228)
org.springframework.beans.factory.support.AbstractBeanFactoryで。 doGetBean(AbstractBeanFactory.java:310)
org.springframework.beans.factory.support.AbstractBeanFactory.getBeanで(AbstractBeanFactory.java:200)
org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:756)で
org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:868)で
org.springframework.context.support.AbstractApplicationContextで.refresh(AbstractApplicationContext.java:549)
org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:409)で
org.springframework.web.context.ContextLoader.initWebApplicationContextで(ContextLoader.java:291)
ORGで。 springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:103)
org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4682)で
org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5150)で
org.apache.catalina.util.LifecycleBase.startで(LifecycleBase.java:183)
org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:713)で
org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:690)で
org.apacheました。 catalina.core.StandardHost.addChild(StandardHost.java:695)
org.apache.catalina.startup.HostConfig.manageApp(HostConfig.java:1728)で
sun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブメソッド)で
sun.reflectました。 NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)で
java.lang.reflect.Method.invoke(Method.java:498)で
org.apache.tomcat.util.modeler.BaseModelMBean.invokeで(BaseModelMBean.java :289)
com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)で
com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)で
org.apache.catalina.mbeansで。 MBeanFactory.createStandardContext(MBeanFactory.java:457)
org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:406)で
sun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブメソッド)で
sun.reflect.NativeMethodAccessorImpl.invokeで( NativeMethodAccessorImpl.java:62)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)で
java.lang.reflect.Method.invoke(Method.java:498)で
org.apache.tomcat.util.modeler.BaseModelMBean.invokeで(BaseModelMBean.java :289)
com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)で
com.sun.jmx.mbeanserver.JmxMBeanServer.invokeで(JmxMBeanServer.java:801)
持つjavax.management.remote.rmiで。 RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1468)
javax.management.remote.rmi.RMIConnectionImpl.access $ 300(RMIConnectionImpl.java:76)で
javax.management.remote.rmi.RMIConnectionImpl $ PrivilegedOperation.runで(RMIConnectionImpl.java:1309 )
javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1401)で
javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:829)で
sun.reflect.NativeMethodAccessorImpl.invoke0で(ネイティブメソッド)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)で
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)で
java.lang.reflect.Method.invokeで(Method.java:498)
日時。 rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:357)
sun.rmi.transport.Transport $ 1.runで(Transport.java:200)
sun.rmi.transport.Transportの$ 1.run(Transport.java:197)で
java.security.AccessController.doPrivilegedで(ネイティブメソッド)
sun.rmi.transport.Transport.serviceCall(Transport.java:196)で
sun.rmi.transport.tcp.TCPTransport.handleMessagesで(TCPTransport.java:573)
sun.rmi.transport.tcp.TCPTransport $ ConnectionHandler.run0で(TCPTransport.java:834)
sun.rmi.transport.tcp.TCPTransport $ ConnectionHandler.lambda $には$ 0(TCPTransport.java:688)を実行
java.security.AccessController.doPrivileged(ネイティブメソッド)で
sun.rmi.transportで。 tcp.TCPTransport $ ConnectionHandler.run(TCPTransport.java:687)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)で
java.util.concurrent.ThreadPoolExecutor $ Worker.runで(ThreadPoolExecutor.java:624)
java.lang.Thread.runで(Thread.java:748)
java.lang.IllegalArgumentExceptionが:によって引き起こさ'のSessionFactory'または'のHibernateTemplate'が必要である
org.springframework.orm.hibernate5.support.HibernateDaoSupport.checkDaoConfig(HibernateDaoSupport.java:122)で
org.springframework.dao.support.DaoSupportました。 afterPropertiesSet(DaoSupport.java:44)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1763)で
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBeanで(AbstractAutowireCapableBeanFactory.java:1700)
... 57もっと

 エラー理由:DAO実装クラスはSessionFactoryのかのHibernateTemplateを注入する必要があるので、HibernateDaoSupportを継承するので

後HibernateDaoSupportを継承し、SessionFactoryのを渡す必要があり、その後のHibernateTemplateを作成します

方法のセットに注射:1、又はHibernateDaoSupportを継承し、ダオは、実装クラスコードを追加しました

  @Resource
     公共 ボイドsetSessionFactory1(のSessionFactoryのSessionFactory){
         スーパー.setSessionFactory(のSessionFactory)。
    }

 

2は、HibernateDaoSupport、のHibernateTemplate直接注入、XMLで手動注入を継承されていないのSessionFactory

DAO実装クラスコードに:

@Component
 パブリック クラス UserDaoImplは実装UserDao {
    @Autowired
     プライベートのHibernateTemplateのHibernateTemplateを。
    @Override 
    公共 ボイド挿入(ユーザユーザ){ 
        hibernateTemplate.save(ユーザ)。
    } 
}

 XMLは、コメントを追加しました:

<ビーンID = "のHibernateTemplate" クラス = "org.springframework.orm.hibernate5.HibernateTemplate"> 
      <プロパティ名= "のSessionFactory" REF = "のSessionFactory"> </ property>の
 </豆>

 

おすすめ

転載: www.cnblogs.com/YpfBolg/p/10955832.html