报错: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>
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}取到了谢谢,问题已解决,但根本原因还是不理解。
解决问题写成不带通配符就可以了。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。