的Javadoc以SqlSessionDaoSupport
班說:自動裝配在MyBatis的彈簧1.2.0
... @自動裝配Autowired從setSqlSessionTemplate刪除, setSqlSessionFactory在1.2.0版本。
爲什麼?在這種情況下,我必須manualy設定的SqlSessionFactory我DAOS還測試類(我使用DbUnit的持久性測試)
的Javadoc以SqlSessionDaoSupport
班說:自動裝配在MyBatis的彈簧1.2.0
... @自動裝配Autowired從setSqlSessionTemplate刪除, setSqlSessionFactory在1.2.0版本。
爲什麼?在這種情況下,我必須manualy設定的SqlSessionFactory我DAOS還測試類(我使用DbUnit的持久性測試)
@Autowired
輾轉根據這個問題:https://code.google.com/p/mybatis/issues/detail?id=763
作爲一個通用目的的框架,MyBatis的不應該產生強烈的斷言,比如「ApplicationContext中只有一個sqlSessionFactory」,這就是爲什麼@Autowired
已被刪除。
作爲一種變通方法,您可以編寫自己的MyAppSqlSessionDaoSupport
擴展SqlSessionDaoSupport
,並覆蓋setSqlSessionFactory(...)
與
@Autowired
public void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory) {
if (!this.externalSqlSession) {
this.sqlSession = new SqlSessionTemplate(sqlSessionFactory);
}
}
然後,讓你的DAO擴展MyAppSqlSessionDaoSupport
而不是SqlSessionDaoSupport
。
嘗試從xml上下文文件注入它 – Elbek
我有超過50個daos來擴展這個類,並且使用組件掃描來聲明daos。你建議mannualy在xml中聲明50個daos嗎? – maks
我也有許多測試類也擴展了這個類(可能不是直接)。我是否也要在xml文件中聲明測試類? – maks