处理今天项目中碰到的mybatis启动报错及其它小收获

1、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}" 

<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 ,否则就无法自动注入。

只需要这么改动:<property name="sqlSessionFactoryBeanNamevalue="writeSqlSessionFactory"  />

改用sqlSessionFactoryBeanName注入就没有问题(不要使用sqlSessionFactory属性注入,使用sqlSessionFactoryBeanName注入),因为这时不会立即初始化sqlSessionFactory,传入的只是名字,非bean,所以不会引发提前初始化问题。
注意:如果你只有一个DataSource,那么就没有必要去指定SqlSessionFactory或SqlSessionTemplate,因为MapperScannerConfigurer将会创建MapperFactoryBean,之后自动装配。但是,如果你使用了一个以上的DataSource(因此,也是多个的SqlSessionFactory),那么就可以使用sqlSessionFactoryBeanName去指定sqlSessionFactory,否则自动装配可能会失效。

2、从svn上面共享项目却无法发布(添加到server服务),原因可能有两处:1)项目名称不符,右键项目,选择最下面的properties--然后对比项目名称是否相同;2)项目类型不是web项目,右键项目,选择最下面的properties,再选择Project Facets ,在里面再选择Dynamic web project 发布就可以。(有时候会出来maven项目转过来后不是maven项目了,并且报缺少jar包的错,这个应该右键选择configure,然后选择maven project)

3、Myeclipse的server加载项目的时候启动特别缓慢,然后选择project--》properties--选择validation  关闭 Suspend all validations (关闭验证)

但是有时候还不管用,怎么办?!找出eclipse.ini,在里面添加 -clean ,然后再关闭编辑器重启,再点击project中的clean

4、java compiler level does not match the version of the installed Java Project facet

把 Project Facets 中的java 版本改一下就可以了

5 、项目登录时候怎么查看登录路径?

双击server服务器,然后点击下面的Modules,进行项目访问路径的编辑

6、Eclipse中Project的属性Deployment Assembly(部署程序集)这个主要用于maven项目中把需要的包导入,把test的去掉 Eclipse中Project的属性Deployment Assembly(支配程序集)

7、Eclipse中新建server服务器,先把tomcat找出来复制一份,把里面的webapps目录下的全部删除,把work目录下面的Catalina目录下的全部删除。在eclipse里面new server,点击下面的 configure runtime Environments ,在里面新建选择tomcat版本并且选中复制的tomcat路径。然后确认之后在server runtime Environments里面选择tomcat版本。最后双击server把里面的Ports端口全部改编为不相同的

8、把已经有的tomcat删除:选择window-》preferences--》server-->runtimeEnvironment

9、开机后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删除,重新添加就可以了

转载于:https://my.oschina.net/u/2297250/blog/393738

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值