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>
qq_42307562
丶栀子丶 路径 我的 这个xml和properties 都是放在resources根目录下
大约一年之前 回复

3个回答

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类里的源码里去看
图片说明

qq_42954332
qq_42954332 回复丶栀子丶: 恩恩,加油,共同努力
大约一年之前 回复
qq_42307562
丶栀子丶 回复qq_42954332: 加油!我也刚开始,也是经常在报错的边缘疯狂试探
大约一年之前 回复
qq_42954332
qq_42954332 好的,谢谢,也是刚开始学。有点懵
大约一年之前 回复
qq_42307562
丶栀子丶 回复qq_42954332: 失败得多了就会了
大约一年之前 回复
qq_42307562
丶栀子丶 回复qq_42954332: 控制变量法 自己试吧,观察区别
大约一年之前 回复
qq_42954332
qq_42954332 回复: 但是我自己加context就不行
大约一年之前 回复
qq_42954332
qq_42954332 回复丶栀子丶: 用你的可以
大约一年之前 回复
qq_42307562
丶栀子丶 回复qq_42954332: 那我把我的头文件copy给你:<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"> <!-- 加载配置文件 --> <context:property-placeholder location="classpath:jdbc.properties" />
大约一年之前 回复
qq_42307562
丶栀子丶 回复qq_42954332: 多点源码进去看,最下面的网友说的也是一个问题,不过你没有用到context就不会报错
大约一年之前 回复
qq_42954332
qq_42954332 读取引入外部文件,jdbc.properties文件出错
大约一年之前 回复
qq_42954332
qq_42954332 不是这个问题,是读取配置文件出错了吧,不知道为什么那样写就不行。在eclipse中就可以,但是在idea中就会出错
大约一年之前 回复

你配置文件最头顶的xsi:schemaLocation没有添加xmlns:context的命名空间,所以使用标签的时候没报错,但是编译的时候就报错了

qq_42954332
qq_42954332 回复doncha: 恩恩,是头文件写的问题,谢谢
大约一年之前 回复
doncha
doncha 回复qq_42954332: 去查找下xml命名空间的书写规范,还有导入context的命名空间需要引入两个http://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsd对照一下看自己书写问题错误在哪里
大约一年之前 回复
qq_42954332
qq_42954332 加进去,还是报错的
大约一年之前 回复
qq_42307562
丶栀子丶 对这是一个问题,xmlns:里有多少 在xsi:schemaLocation就得写多少
大约一年之前 回复

PropertyPlaceholder在不同spring版本下的配置方式

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐