20

谁能帮我解决以下错误,因为我是春天的新手?

cvc-complex-type.2.4.c: The matching wildcard is strict, but no         
declaration can be found for element 'context:property-placeholder'.

我在 applicationContext.xml 中有以下配置:

<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans       
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"
xmlns:context="http://www.springframework.org/schema/context">

<bean id="dataSource"class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
<context:property-placeholder location="src/jdbc.properties"/>
4

3 回答 3

42

Spring 提供了一堆额外的命名空间,它们提供了做事的快捷方式——比如 tx (transactions)、util (utils)、mvc (spring MVC declarations):

要使用其中之一,您必须在 XML 文件中设置模式映射。如果这样做了,您将获得基本的代码完成(您的 IDE 可能会提供更多)。.

在您的声明上下文中没有设置/映射。

将您的声明更改为以下内容:

<?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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/context
            http://www.springframework.org/schema/context/spring-context-3.0.xsd">


</beans>

如果您愿意,您还可以为内部组件设置自己的命名空间。

于 2013-01-28T07:26:17.553 回答
1

如果您使用 Spring >= 3.1,请使用 PropertySourcesPlaceholderConfigurer 而不是旧的。

解决方法:更换

<context:property-placeholder location="classpath:sport.properties"/>

经过

`

<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location">
<value>classpath:sport.properties</value>
</property>
</bean>

`

于 2018-06-14T06:50:59.063 回答
0

如果使用 Spring Framework 5.2 或更高版本,您可以使用替代方法从属性文件加载变量:

    <bean class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer">
        <property name="location">
            <value>classpath:sport.properties</value>
        </property>
    </bean>

因此,您的完整 XML 文件将如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<beans
        xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
    
    <bean class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer">
        <property name="location">
            <value>classpath:jdbc.properties</value>
        </property>
    </bean>
    
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName" value="${jdbc.driverClassName}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>
</beans>

它将提供与context:property-placeholder

于 2021-07-12T22:52:02.333 回答