zoukankan      html  css  js  c++  java
  • maven update解决TypeMismatchException

    突然项目启动不了,console日志显示有TypeMismatchException如下

    nested exception is org.springframework.beans.TypeMismatchException: Failed to convert property value of type [java.lang.String] to required type [int] for property 'maxIdle'; nested exception is java.lang.NumberFormatException: For input string: "@dbcp.maxIdle@"

    从日志分析是xml配置文件中的一行

    <property name="maxIdle" value="${dbcp.maxIdle}" />

    而这个dbcp.maxIdle属性是配置在.properties文件中的

    dbcp.maxIdle=@dbcp.maxIdle@

    而properties文件这一行解析时,将@dbcp.maxIdle@当做字面值来解析了导致。

    第一步,经网络搜索得知,在mybatis和spring整合时,有MapperScannerConfigurer和PropertyPlaceholderConfigurer两个加载顺序导致的问题

    因为MapperScannerConigurer实际是在解析加载bean定义阶段的,这个时候要是设置sqlSessionFactory的话,会导致提前初始化一些类,这个时候,PropertyPlaceholderConfigurer还没来得及替换定义中的变量,导致把表达式当作字符串复制了,解决的办法如下:
     
    方法一:
    修改<property name="sqlSessionFactory" ref="sqlSessionFactory"/><property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
    原理:使用sqlSessionFactoryBeanName注入,不会立即初始化sqlSessionFactory, 所以不会引发提前初始化问题。
     
    方法二:
    直接删掉<property name="sqlSessionFactory" ref="sqlSessionFactory"/>
    注意:在没有配置这一行时,必须配置一个以sqlSessionFactory命名的org.mybatis.spring.SqlSessionFactoryBean。

    但是经过检查,这一块配置并没有问题。

    后来发现pom.xml文件上标记有出错

    错误信息: Execution default-testResources of goal org.apache.maven.plugins:maven-resources-plugin:2.6错误

    但是在本地的repository中,是有这个依赖的。试着maven-update project,错误修复了。

  • 相关阅读:
    Codeforces 872B:Maximum of Maximums of Minimums(思维)
    Codeforces 849A:Odds and Ends(思维)
    洛谷 P2397:yyy loves Maths VI (mode)(摩尔投票算法)
    POJ 3264:Balanced Lineup(区间最值查询ST表&线段树)
    Atcoder ABC137D:Summer Vacation(贪心)
    POJ 3278:The merchant(LCA&DP)
    Codeforces Gym-100985C: MaratonIME plays Nim(交互题&博弈)
    ZOJ 1141:Closest Common Ancestors(LCA)
    浅谈C++运算符重载
    初学c++动态联编
  • 原文地址:https://www.cnblogs.com/wendelhuang/p/6800658.html
Copyright © 2011-2022 走看看