开发者社区 问答 正文

spring使用propertyConfigurer配置连接池出错:配置报错 

<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">  
	<property name="locations">  
	    <list>  
	        <value>classpath:config/config.properties</value>  
	    </list>  
	</property>  
</bean>
   
<bean id="dbInfo" class="com.metarnet.noc.db.DbInfo">
	<property name="driver" value="${jdbc.driverClass}" />  
	<property name="url" value="${jdbc.url}" />  
	<property name="user" value="${jdbc.user}" />  
	<property name="password" value="${jdbc.password}" />  
	<property name="initialPoolSize" value="${jdbc.initialPoolSize}" />  
	<property name="minPoolSize" value="${jdbc.minPoolSize}" />  
	<property name="maxPoolSize" value="${jdbc.maxPoolSize}" />
</bean>

<bean id="dataSource" lazy-init="true" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close" >  
	<property name="driverClass" value="com.mysql.jdbc.Driver" />
	<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/spring?useUnicode=true&characterEncoding=UTF-8" />  
	<property name="user" value="root" />  
	<property name="password" value="123456" />  
	<property name="initialPoolSize" value="5" />  
	<property name="minPoolSize" value="2" />  
	<property name="maxPoolSize" value="${jdbc.maxPoolSize}" />  
</bean>

如上面的配置, dbInfo是我用来测试propertyConfigurer赋值的,结果正常,  可下面的dataSource 死活不能用这种方法配置 , 只要有 ${} 就报错

展开
收起
kun坤 2020-05-31 23:01:31 542 分享 版权
阿里云 AI 助理回答

根据您的描述,您在classpath:config/config.properties文件中配置了dbInfo用于测试propertyConfigurer,并且配置正常生效。但是,当尝试使用``占位符方式配置dataSource时遇到了错误。为了解决您的问题,请按照以下步骤进行排查和解决:

  1. 检查配置格式与路径: 确保dataSource的配置格式正确无误,且符合Spring框架对于属性占位符的使用规范。例如,正确的格式应类似于:

    spring.datasource.url=${dbUrl}
    spring.datasource.username=${dbUsername}
    

    同时,请确认config.properties文件的确位于classpath:config/目录下,这与SOFABoot应用默认的application.properties路径不同。如果您的应用是基于SOFABoot,标准路径应为resources/config/application.properties

  2. 自定义配置处理: 如果您是在自定义组件或特殊环境下使用这些配置,需要确保有相应的PropertySource配置来加载这个自定义的config.properties文件。Spring Boot应用通常会自动加载application.properties,但额外的配置文件可能需要手动配置加载。

  3. 环境变量或系统属性设置: ``占位符的值来源于环境变量、系统属性或者其他的配置源。请确认您已经正确设置了如dbUrldbUsername等环境变量或系统属性。未设置这些变量会导致占位符无法解析,从而引发错误。

  4. 日志分析: 查看应用启动时的日志输出,特别是关于配置加载和数据源初始化的部分。错误信息通常会提供导致失败的具体原因,比如找不到对应的属性值或配置冲突等。

  5. 避免特殊字符与编码问题: 确保配置文件中的值没有包含可能导致解析异常的特殊字符,并检查文件本身的编码是否为UTF-8,以避免因编码问题导致的读取错误。

  6. 框架兼容性检查: 如果您使用的不是Spring Boot或SOFABoot的标准配置方式,需检查所使用的框架或库是否支持``占位符的动态解析,以及是否有特定的配置要求或限制。

  7. 去除`尝试直接赋值: 作为排查手段,您可以暂时移除``占位符,直接在配置文件中硬编码数据库连接信息,以验证问题是否与占位符解析直接相关。

如果以上步骤均未能解决问题,建议查看具体报错信息并结合应用框架的官方文档或社区资源进一步分析,或考虑是否存在版本兼容性问题,可能需要升级或调整依赖库版本。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答