You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring集成MyBatis配置MapperScannerConfigurer无法解析数据源占位符问题

问题根因

报错核心是Spring未成功读取到application.yaml中的配置项,导致占位符${datasource.minpoolsize}没有被替换成实际数值,直接作为字符串传入数据源参数触发数字格式转换异常,主要由两个配置问题导致:

  1. PropertySourcesPlaceholderConfigurer默认不支持YAML格式的配置文件,无法解析yaml内容
  2. MapperScannerConfigurer作为高优先级的Bean定义后置处理器,执行时机早于默认配置的PropertySourcesPlaceholderConfigurer,可能导致依赖的占位符未提前解析

修复方案

1. 配置YAML解析支持

修改PropertySourcesPlaceholderConfigurer的配置,显式指定YAML解析工厂,同时设置最高优先级保证占位符提前解析:

<bean id="appProperties"
      class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer">
    <property name="order" value="#{T(org.springframework.core.Ordered).HIGHEST_PRECEDENCE}"/>
    <property name="ignoreUnresolvablePlaceholders" value="true" />
    <property name="propertiesFactoryBean">
        <bean class="org.springframework.beans.factory.config.YamlPropertiesFactoryBean">
            <property name="resources" value="classpath:configs/application.yaml"/>
        </bean>
    </property>
</bean>

2. 校验配置匹配性

  • 确认application.yaml中存在datasource.minpoolsize配置项,注意大小写、分隔符与占位符完全一致,避免将min-pool-size误写为minpoolsize
  • 确认编译后的类路径下存在configs/application.yaml文件,排除配置文件未被打包的问题

内容的提问来源于stack exchange,提问作者Suresh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 14:06:04