org.springframework.orm.hibernate3.LocalSessionFactoryBeanの疑惑解決策
4061 ワード
プロジェクトではSSHフレームワーク(Struts 2+Spring 3+Hibernate 3)が使用され、アプリケーションContextではセッションファクトリが構成されています
junit 4でテストを定義しました
テストを実行中に異常が発生しました
問題の分析:
LocalSessionFactoryBeanが実現したorg.springframework.beans.factory.FactoryBeanインタフェース、springは組み立てる時、orgが実現したことを発見したら.springframework.beans.factory.FactoryBeanインタフェースでは、FactoryBean#getObject()メソッドで返されるオブジェクトのアセンブリが使用されます.具体的には、ドキュメントを参照してください.LocalSessionFactoryBeanインスタンスを取得するには、idの前に'&'を追加すればいいです.プロファイルにBeanFactory.getBean('&sessionFactory')が入手したのがLocalSessionFactoryBeanの例である.
解決方法:
転載先:https://www.cnblogs.com/wangshuo1/p/5598176.html
"sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
"dataSource" ref="dataSource">
"hibernateProperties">
"hibernate.dialect" >org.hibernate.dialect.SQLServerDialect
"hibernate.jdbc.batch_size">20
"hibernate.show_sql">true
"mappingResources">
com/jw/pojo/JwUser.hbm.xml
junit 4でテストを定義しました
@Test
public void beanSessionFactoryTest(){
LocalSessionFactoryBean sessionFactory=(LocalSessionFactoryBean)appContext.getBean("sessionFactory");
}
テストを実行中に異常が発生しました
Testcase: beanSessionFactoryTest(com.test.spring.SpringBeanTest): Caused an ERROR
org.hibernate.impl.SessionFactoryImpl cannot be cast to org.springframework.orm.hibernate3.LocalSessionFactoryBean
java.lang.ClassCastException: org.hibernate.impl.SessionFactoryImpl cannot be cast to org.springframework.orm.hibernate3.LocalSessionFactoryBean
問題の分析:
LocalSessionFactoryBeanが実現したorg.springframework.beans.factory.FactoryBeanインタフェース、springは組み立てる時、orgが実現したことを発見したら.springframework.beans.factory.FactoryBeanインタフェースでは、FactoryBean#getObject()メソッドで返されるオブジェクトのアセンブリが使用されます.具体的には、ドキュメントを参照してください.LocalSessionFactoryBeanインスタンスを取得するには、idの前に'&'を追加すればいいです.プロファイルにBeanFactory.getBean('&sessionFactory')が入手したのがLocalSessionFactoryBeanの例である.
解決方法:
ClassPathXmlApplicationContext cpx=new ClassPathXmlApplicationContext("beans.xml");
LocalSessionFactoryBean sessionFactory=(LocalSessionFactoryBean)cpx.getBean("&sessionFactory");
System.out.println("step3 sessionFactory=" + sessionFactory );
転載先:https://www.cnblogs.com/wangshuo1/p/5598176.html