开发者社区> 问答> 正文

Spring+mybatis+maven整合过程加载配置文件jdbc.prope?400报错

报错:Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'jdbc.driver' in value "${jdbc.driver}"
    at org.springframework.util.PropertyPlaceholderHelper.parseStringValue(PropertyPlaceholderHelper.java:174)
    at org.springframework.util.PropertyPlaceholderHelper.replacePlaceholders(PropertyPlaceholderHelper.java:126)
    at org.springframework.core.env.AbstractPropertyResolver.doResolvePlaceholders(AbstractPropertyResolver.java:236)
    at org.springframework.core.env.AbstractPropertyResolver.resolveRequiredPlaceholders(AbstractPropertyResolver.java:210)
    at org.springframework.context.support.PropertySourcesPlaceholderConfigurer$2.resolveStringValue(PropertySourcesPlaceholderConfigurer.java:172)
    at org.springframework.beans.factory.config.BeanDefinitionVisitor.resolveStringValue(BeanDefinitionVisitor.java:282)
    at org.springframework.beans.factory.config.BeanDefinitionVisitor.resolveValue(BeanDefinitionVisitor.java:204)
    at org.springframework.beans.factory.config.BeanDefinitionVisitor.visitPropertyValues(BeanDefinitionVisitor.java:141)
    at org.springframework.beans.factory.config.BeanDefinitionVisitor.visitBeanDefinition(BeanDefinitionVisitor.java:82)
    at org.springframework.beans.factory.config.PlaceholderConfigurerSupport.doProcessProperties(PlaceholderConfigurerSupport.java:220)
    ... 19 more

spring配置文件:

<context:property-placeholder location="classpath:duobao.properties" ignore-unresolvable="true" />

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="typeAliasesPackage" value="com.duobao.modules.dao"/>
        <property name="configLocation" value="classpath:mybatis-config.xml"/>
        <property name="mapperLocations" value="classpath*:mappings/**/*.xml"/>
    </bean>

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.duobao.modules.dao"/>
                <property name="annotationClass" value="com.duobao.common.persistence.annotation.MyBatisDao"/>
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
    </bean>

 

展开
收起
爱吃鱼的程序员 2020-06-08 11:54:33 778 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    spring入口加载jdbc.properties就行

    <beanclass="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"><!--允许JVM参数覆盖--><propertyname="systemPropertiesModeName"value="SYSTEM_PROPERTIES_MODE_OVERRIDE"/><!--忽略没有找到的资源文件--><propertyname="ignoreResourceNotFound"value="true"/><!--配置资源文件--><propertyname="locations"><list><value>classpath:jdbc.properties</value></list></property></bean>
    回复 @wanyi8358:当你的配置为文件中出现${jdbc.driver}这种取值方式时,spring会去内存中找这个jdbc.driver对应的值,没找到自然会报错,而你需要做的的就是在spring启动的时候加载任意的配置文件,在配置文件中以key=value的格式书写,spring就会将数据读到内存中,这样你需要用到的地方就能通过${key}取到了谢谢,问题已解决,但根本原因还是不理解。

    解决问题写成不带通配符就可以了。

    2020-06-08 11:54:50
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
云栖社区特邀专家徐雷Java Spring Boot开发实战系列课程(第20讲):经典面试题与阿里等名企内部招聘求职面试技巧 立即下载
微服务架构模式与原理Spring Cloud开发实战 立即下载
阿里特邀专家徐雷Java Spring Boot开发实战系列课程(第18讲):制作Java Docker镜像与推送到DockerHub和阿里云Docker仓库 立即下载

相关实验场景

更多