第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Spring集成mybatis

Spring集成mybatis

胡說叔叔 2019-03-22 19:14:39
org.springframework.beans.factory.BeanNotOfRequiredTypeException: Bean named 'sqlSessionFactory' must be of type [org.mybatis.spring.SqlSessionFactoryBean], but was actually of type [org.apache.ibatis.session.defaults.DefaultSqlSessionFactory]at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:375)at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:969)at com.zhwl.msm.test.Tests.testMessage(Tests.java:20)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)at java.lang.reflect.Method.invoke(Method.java:597)at org.junit.internal.runners.TestMethodRunner.executeMethodBody(TestMethodRunner.java:99)at org.junit.internal.runners.TestMethodRunner.runUnprotected(TestMethodRunner.java:81)at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34)at org.junit.internal.runners.TestMethodRunner.runMethod(TestMethodRunner.java:75)at org.junit.internal.runners.TestMethodRunner.run(TestMethodRunner.java:45)at org.junit.internal.runners.TestClassMethodsRunner.invokeTestMethod(TestClassMethodsRunner.java:66)at org.junit.internal.runners.TestClassMethodsRunner.run(TestClassMethodsRunner.java:35)at org.junit.internal.runners.TestClassRunner$1.runUnprotected(TestClassRunner.java:42)at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34)at org.junit.internal.runners.TestClassRunner.run(TestClassRunner.java:52)at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:38)at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
查看完整描述

3 回答

?
元芳怎么了

TA貢獻1798條經(jīng)驗 獲得超7個贊

這其實是一個Spring容器BeanFactory的問題,具體可以參考Spring參考7.8.3章節(jié)中的這一段,

When you need to ask a container for an actual FactoryBean instance itself instead of the bean it produces, preface the bean’s id with the ampersand symbol ( &) when calling the getBean() method of the ApplicationContext. So for a given FactoryBean with an id of myBean, invoking getBean("myBean") on the container returns the product of the FactoryBean; whereas, invoking getBean("&myBean") returns the FactoryBean instance itself.

大致意思翻譯過來就是,當你用beanName去引用一個實現(xiàn)了FactoryBean的工廠實例,其實引用的并不是工廠本身,而是工廠中產(chǎn)生的產(chǎn)品(FactoryBean#getObject())。但是當你真正想要的是工廠而不是產(chǎn)品時,可以在beanName前加上&

也就是,在你的代碼中,需要加原先的ref="sqlSessionFactory"改為ref="&sqlSessionFactory"就能獲取到類型為SqlSessionFactoryBean而不是SqlSessionFactory的對象了。

題外話,就你的DAO設計來看,依賴一個專為Spring使用的對象并不是一個很好的設計。應該依賴于MyBatis直接提供的SqlSessionFactory實例。


查看完整回答
反對 回復 2019-04-21
?
一只斗牛犬

TA貢獻1784條經(jīng)驗 獲得超2個贊

看文檔:

https://img1.sycdn.imooc.com//5cbbd5cc0001d96808000294.jpg

問題在于,SqlSessionFactoryBean是個工廠,容器通過這個工廠的getObject()方法得到了真正要注入的Bean。我猜你應該是在messageLogDao之類要使用sqlSessionFactory的地方,給注入的內(nèi)容寫死了類型SqlSessionFactoryBean吧?

但按照我們剛才說的,實際的類型并不是SqlSessionFactoryBean,應該是DefaultSqlSessionFactory才對

這個你得多看文檔。我也沒測試,不敢保證結果^^


查看完整回答
反對 回復 2019-04-21
?
三國紛爭

TA貢獻1804條經(jīng)驗 獲得超7個贊

SqlSessionFactory是一個接口,DefaultSqlSessionFactory是一個類實現(xiàn)了SqlSessionFactory接口。
https://img1.sycdn.imooc.com//5cbbd5d8000100f208000242.jpg

我們知道sqlsession對應著一次數(shù)據(jù)庫會話。由于數(shù)據(jù)庫會話不是永久的,因此sqlsession的生命周期也不應該是永久的.相反,在你每次訪問數(shù)據(jù)庫時都需要創(chuàng)建它(當然并不是說在Sqlsession里只能執(zhí)行一次sql,你可以執(zhí)行多次,當一旦關閉了Sqlsession就需要重新創(chuàng)建它)。創(chuàng)建Sqlsession通過SqlsessionFactory來創(chuàng)建。由于SqlSessionFactory在mybatis的默認實現(xiàn)類為DefaultSqlSessionFactory , 其構造過程主要是通過調(diào)用build方法來創(chuàng)建,build方法通過讀取字節(jié)流InputStream或者字符流Reader,當然字節(jié)流和字符流都是通過讀取配置文件xml獲取得到的。

https://img1.sycdn.imooc.com//5cbbd5db00010f9608000237.jpg



查看完整回答
反對 回復 2019-04-21
  • 3 回答
  • 0 關注
  • 582 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號