處理今天項目中碰到的mybatis啓動報錯及其它小收穫

一、mybatis的錯誤:Caused by: org.springframework.beans.TypeMismatchException: Failed to convert property value of type 'java.lang.String' to required type 'int' for property 'initialPoolSize'; nested exception is java.lang.NumberFormatException: For input string: "${pool.c3p0.initialPoolSize}" html

<bean id="writeSqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  <property name="dataSource" ref="dataSourceWrite"  />
  <property name="typeAliasesSuperType" value="com.xueyi.core.domain.IDomain" />
  
  <property name="mapperLocations" value="classpath*:mybatis/*Mapper.xml" />    
        <property name="typeHandlersPackage" value="com.xueyi.core.mybatis.handler"></property>
        <property name="failFast" value="true"></property>
 </bean>
     <!-- scan for mappers and let them be autowired -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.xueyi" />
        <property name="markerInterface" value="com.xueyi.core.dao.ISqlWriteMapper" />
        <property name="sqlSessionFactory" ref="writeSqlSessionFactory"  />
    </bean>

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

只須要這麼改動:<property name="sqlSessionFactoryBeanNamevalue="writeSqlSessionFactory"  />web

改用sqlSessionFactoryBeanName注入就沒有問題(不要使用sqlSessionFactory屬性注入,使用sqlSessionFactoryBeanName注入),由於這時不會當即初始化sqlSessionFactory,傳入的只是名字,非bean,因此不會引起提早初始化問題。
注意:若是你只有一個DataSource,那麼就沒有必要去指定SqlSessionFactory或SqlSessionTemplate,由於MapperScannerConfigurer將會建立MapperFactoryBean,以後自動裝配。可是,若是你使用了一個以上的DataSource(所以,也是多個的SqlSessionFactory),那麼就可使用sqlSessionFactoryBeanName去指定sqlSessionFactory,不然自動裝配可能會失效。
spring

二、從svn上面共享項目卻沒法發佈(添加到server服務),緣由可能有兩處:1)項目名稱不符,右鍵項目,選擇最下面的properties--而後對比項目名稱是否相同;2)項目類型不是web項目,右鍵項目,選擇最下面的properties,再選擇Project Facets ,在裏面再選擇Dynamic web project 發佈就能夠。(有時候會出來maven項目轉過來後不是maven項目了,而且報缺乏jar包的錯,這個應該右鍵選擇configure,而後選擇maven project)sql

三、Myeclipse的server加載項目的時候啓動特別緩慢,而後選擇project--》properties--選擇validation  關閉 Suspend all validations (關閉驗證)tomcat

可是有時候還無論用,怎麼辦?!找出eclipse.ini,在裏面添加 -clean ,而後再關閉編輯器重啓,再點擊project中的clean服務器

四、java compiler level does not match the version of the installed Java Project facetsession

把 Project Facets 中的java 版本改一下就能夠了mybatis

5 、項目登陸時候怎麼查看登陸路徑?app

雙擊server服務器,而後點擊下面的Modules,進行項目訪問路徑的編輯

六、Eclipse中Project的屬性Deployment Assembly(部署程序集)這個主要用於maven項目中把須要的包導入,把test的去掉 Eclipse中Project的屬性Deployment Assembly(支配程序集)

七、Eclipse中新建server服務器,先把tomcat找出來複製一份,把裏面的webapps目錄下的所有刪除,把work目錄下面的Catalina目錄下的所有刪除。在eclipse裏面new server,點擊下面的 configure runtime Environments ,在裏面新建選擇tomcat版本而且選中複製的tomcat路徑。而後確認以後在server runtime Environments裏面選擇tomcat版本。最後雙擊server把裏面的Ports端口所有改編爲不相同的

八、把已經有的tomcat刪除:選擇window-》preferences--》server-->runtimeEnvironment

九、開機後server啓動報錯:'Publishing to Tomcat v6.0 Server ai localhost...'has encountered a problem
Could not publish to the server.       Details:
Could not publish to the server.
java.lang.NullPointException

處理拌飯:把tomcat刪除,從新添加就能夠了

相關文章
相關標籤/搜索