配置spring xml配置命名空间以避免构思警告

时间:2015-06-01 16:50:55

标签: java spring validation xml-namespaces xml-configuration

我有以下spring xml配置标头:

<beans
        xmlns="http://www.springframework.org/schema/beans"
        xmlns:p="http://www.springframework.org/schema/p"
        xmlns:context="http://www.springframework.org/schema/context"
        xmlns:tx="http://www.springframework.org/schema/tx"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:task="http://www.springframework.org/schema/task"
        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.xsd
        http://www.springframework.org/schema/tx
        http://www.springframework.org/schema/tx/spring-tx.xsd
        http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd">

   <tx:annotation-driven transaction-manager="transactionManager"/> 
   ....

当我在想法中打开文件时,我看到红色错误: 1。xmlns:p="http://www.springframework.org/schema/p -

  

未注册URI

  1. 豆标记的错误。
    enter image description here
  2. 但它运作良好。

    如何避免红色错误?

    P.S。

    我的xml配置中有以下片段:

           <bean id="sessionFactory"
                  class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
                <property name="dataSource" ref="dataSource"/>
                <property name="configLocation">
                    <value>classpath:hibernate.cfg.xml</value>
                </property>
                <property name="hibernateProperties">
                    <props>
                        <prop key="hibernate.show_sql">true</prop>
                        <prop key="hibernate.dialect">${jdbc.dialect}</prop>
                        <prop key="hibernate.connection.charSet">UTF-8</prop>
                        <prop key="hibernate.show_sql">true</prop>
                        <prop key="hibernate.format_sql">true</prop>
                        <prop key="hbm2ddl.auto">validate</prop>
                    </props>
                </property>
            </bean>
    

3 个答案:

答案 0 :(得分:2)

一个特殊的命名空间(p命名空间)没有在XSD文件中定义,只存在于Spring本身的核心。 p-namespace不需要架构定义,是配置属性的另一种方法 与你目前所看到的方式不同。

由于 p:“名称空间”没有关联的XSD方案,因此Intelijj无法验证此命名空间。

一种解决方案是在IDEA中取消验证,但您无法找到其他问题。

似乎Intelijj IDEA没有为此问题提供任何解决方案。 https://youtrack.jetbrains.com/issue/IDEA-101723

答案 1 :(得分:1)

如果从xml中删除这行代码xmlns:p =“http://www.springframework.org/schema/p”,则会清除错误。因为春天没有这样的xsd。如果您想使用此类xsd,则可以尝试使用以下代码:

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"
    p:dataSource-ref="dataSource"
    p:mappingResources-ref="mappingResourcesList"
    p:hibernateProperties-ref="hibernatePropertiesProps" />

基本上,它们被定义为映射到相同的XML名称空间。

答案 2 :(得分:0)

您使用不存在的架构将“p”注册为命名空间。如果您没有<p: ></p: >之类的任何标签,那么您的配置仍将在运行时运行。但是,IDE会检查以确保所有命名空间定义都正确(即使未使用)。

解决问题的最简单方法是删除有问题的命名空间定义。如果您正在使用该命名空间,请找到该架构的正确位置并将其放在那里。