MapperScannerConfigurer不 property-placeholder

關於org.mybatis.spring.mapper.MapperScannerConfigurer不支持 property-placeholder 參考了http://www.oschina.net/question/188964_32305,才解決了本身的問題。java


先註釋紅色部分,我是以前寫的。然而就會產生錯誤,說找不到${driverClassName}spring

java.lang.ClassNotFoundException: ${driverClassName}sql

後面搜索一番,說:session

「在spring裏使用org.mybatis.spring.mapper.MapperScannerConfigurer 進行自動掃描的時候,設置了sqlSessionFactory 的話,可能會致使PropertyPlaceholderConfigurer失效,也就是用${jdbc.username}這樣之類的表達式,將沒法 獲取到properties文件裏的內容。 致使這一緣由是由於,MapperScannerConigurer實際是在解析加載bean定義階段的,這個時候要是設置 sqlSessionFactory的話,會致使提早初始化一些類,這個時候,PropertyPlaceholderConfigurer還沒來得及替 換定義中的變量,致使把表達式看成字符串複製了。 但若是不設置sqlSessionFactory 屬性的話,就必需要保證sessionFactory在spring中名稱必定要是sqlSessionFactory ,不然就沒法自動注入。又或者直接定義 MapperFactoryBean ,再或者放棄自動代理接口方式。
mybatis

而後在spring 3.1.1以上版本是能夠這樣的。」app

「改用sqlSessionFactoryBeanName注入就沒有問題(不要使用sqlSessionFactory屬性注入,使用 sqlSessionFactoryBeanName注入),由於這時不會當即初始化sqlSessionFactory,傳入的只是名字,非bean, 因此不會引起提早初始化問題。」.net

因此個人問題解決了,只要註釋紅色圈圈的上面一行而且解開紅色框所在行的註釋就好了。  其中注意的是屬性名:sqlSessionFactoryBeanName不是隨意來的。代理

相關文章
相關標籤/搜索