Spring及Mybatis整合占位符解析失败问题解决

 更新时间:2020年07月17日 11:36:58   作者:来自海上的鱼  
这篇文章主要介绍了Spring及Mybatis整合占位符解析失败问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

问题:写了一个新的dao接口,进行单元测试时提示:

Initialization of bean failed; nested exception is org.springframework.beans.TypeMismatchException: Failed to convert property value of type 'java.lang.String' to required type 'int' for property 'maxActive'; nested exception is java.lang.NumberFormatException: For input string: "${maxActive}"

原配置datasource时使用了占位符,该提示是在解析占位符${maxActive}时未找到对应的属性。

单元测试加载properties使用@PropertySource(value = {"classpath*:jdbc.properties"})注解加载配置文件。

在确认自己properties文件路径是正确的且存在该属性值后,在网上找到相应的资料如https://my.oschina.net/u/1455908/blog/215953说的是在配置mybatis的MapperScannerConigurer时会优先于@PropertySource注解解析占位符,由于占位符未进行解析,直接使用了“${maxActive}”了该字符串作为该配置项的值。也就是报错所说的“${maxActive}”这个字符串无法转化成对应的int数值。

解决问题

将配置文件的加载由原先使用注解@PropertySource(value = {"classpath*:jdbc.properties"})改成如下:

	<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
		<property name="locations">
			<list>
				<value>classpath:jdbc.properties</value>
			</list>
		</property>
		<property name="ignoreUnresolvablePlaceholders" value="true"></property>
	</bean>

原先MapperScannerConfigurer的配置没有做修改,如下:

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <property name="basePackage" value="com.**.dao,com.**.mapper,com.**.test.**.mapper" />
    <!--网上说这个name属性值要配置成这个sqlSessionFactoryBeanName名字,我恰好配的就是这个,所以我这里不需要改-->
    <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
</bean>

这样该问题解决。但疑问依然存在,为何@PropertySource这个注解没有ignoreUnresolvablePlaceholders这个属性可以进行配置,并且用xml的方式又能正确解析。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • springboot各种下载文件的方式汇总

    springboot各种下载文件的方式汇总

    下载功能其实就是用户输入指定文件路径信息,然后把文件返回给用户,下面这篇文章主要给大家介绍了关于springboot各种下载文件的方式,需要的朋友可以参考下
    2022-10-10
  • 创建java多线程程序

    创建java多线程程序

    Java 给多线程编程提供了内置的支持。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。希望本篇文章能够给你带来帮助
    2021-06-06
  • java操作solr实现查询功能的实例

    java操作solr实现查询功能的实例

    下面小编就为大家分享一篇java操作solr实现查询功能的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-11-11
  • java程序员必会的远程debug教程

    java程序员必会的远程debug教程

    这篇文章主要为大家介绍了java程序员必会的远程debug教程详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • idea本地jar使用maven打包本地依赖实现自动编译到项目里的操作

    idea本地jar使用maven打包本地依赖实现自动编译到项目里的操作

    这篇文章主要介绍了idea本地jar使用maven打包本地依赖实现自动编译到项目里的操作,本文通过示例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2024-05-05
  • Java单链表的增删改查与面试题详解

    Java单链表的增删改查与面试题详解

    单链表是链表的其中一种基本结构。一个最简单的结点结构如图所示,它是构成单链表的基本结点结构。在结点中数据域用来存储数据元素,指针域用于指向下一个具有相同结构的结点。 因为只有一个指针结点,称为单链表
    2022-09-09
  • java实现两个文件的异或运算

    java实现两个文件的异或运算

    这篇文章主要为大家详细介绍了java实现两个文件的异或运算,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07
  • 关于Java 项目封装sqlite连接池操作持久化数据的方法

    关于Java 项目封装sqlite连接池操作持久化数据的方法

    这篇文章主要介绍了Java 项目封装sqlite连接池操作持久化数据的方法,文中给大家介绍了sqlite的体系结构及封装java的sqlite连接池的详细过程,需要的朋友可以参考下
    2021-11-11
  • Java 图片复制功能实现过程解析

    Java 图片复制功能实现过程解析

    这篇文章主要介绍了Java 图片复制功能实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • mybatis映射文件mapper.xml的具体写法

    mybatis映射文件mapper.xml的具体写法

    在开发过程中,需要开发人员配置mapper映射文件,本文主要介绍了mybatis映射文件mapper.xml的具体写法,感兴趣的可以了解一下
    2021-09-09

最新评论