qq_42954332 2019-08-01 15:37 采纳率: 50%
浏览 1011
已采纳

spring引入properties文件运行时报错

spring引入properties文件运行时报错

不引入文件,在xml文件中配置jdbc运行正常

org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 10 in XML document from class path resource [application.xml] is invalid; nested exception is org.xml.sax.SAXParseException: cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element 'context:property-placeholder'.

xml文件

<?xml version="1.0" encoding="UTF-8"?>
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">

<!--添加数据源-->
<!--<context:property-placeholder location="jdbc.properties"></context:property-placeholder>-->
<context:property-placeholder location="jdbc.properties"></context:property-placeholder>
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
    <property name="driverClass" value="${jdbc.driver}"></property>
    <property name="jdbcUrl" value="${jdbc.url}"></property>
    <property name="user" value="${jdbc.username}"></property>
    <property name="password" value="${jdbc.password}"></property>
    <!--<property name="driverClass" value="com.mysql.jdbc.Driver"></property>
    <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/test"></property>
    <property name="user" value="root"></property>
    <property name="password" value="123456"></property>-->

</bean>

如果引入文件配置这样配置就可以正常运行,这是为什么

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
            <value>jdbc.properties</value>
        </property>
   </bean>
  • 写回答

3条回答 默认 最新

  • 丶栀子丶 2019-08-01 15:49
    关注

    dataSource 配置里面 里的 name=""不能乱写。 再就是 其里面的 value=""的${}里的 要按照你jdbc.properties文件相应的名字写。
    别你想写啥就写啥。
    我随便copy一个我写的给你:

    <bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource">
                    <!-- property 里的name是 dataSource Bean里的属性(已经写好了的),value就是给其赋值,
                            你把name乱写 他只会按照他的属性找,你设的driverClass 是个啥?
                    -->
            <property name="driverClassName" value="${jdbc.driver}"/>
            <property name="url" value="${jdbc.url}"/>
            <property name="username" value="${jdbc.username}"/>
            <property name="password" value="${jdbc.password}" />
            <!-- 连接初始值,连接池启动时创建的连接数量的初始值  默认值是0 -->
            <property name="initialSize" value="3" />
            <!-- 最小空闲值.当空闲的连接数少于阀值时,连接池就会预申请去一些连接,以免洪峰来时来不及申请  默认值是0 -->
            <property name="minIdle" value="10" />
            <!-- 最大空闲值.当经过一个高峰时间后,连接池可以慢慢将已经用不到的连接慢慢释放一部分,一直减少到maxIdle为止 ,0时无限制  默认值是8 -->
            <property name="maxIdle" value="10" />
            <!-- 连接池的最大值,同一时间可以从池分配的最多连接数量,0时无限制   默认值是8 -->
            <property name="maxTotal" value="50" />
        </bean>
    
    

    你在网上随便找一篇就知道了,记得给我点赞,关注就更好了(●'◡'●)

    你自己按住Ctrl点击进BasicDataSource类里的源码里去看
    图片说明

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?