Spring数据xml配置模式验证错误

时间:2015-10-30 07:20:53

标签: xml eclipse spring spring-data

我有一个项目使用Spring(context,transaction,apect)4.1.6.RELEASE和spring-data-jpa 1.8.0.RELEASE并遇到奇怪的错误,假设是由xsd验证引起的。但是,我无法确定原因。奇怪的是,项目运行正常,我的所有bean都被正确识别。

我正在使用Eclipse luna和Spring Tools Suite插件

我从applicationContext.xml中删除了所有内容,除了" jpa:"引起问题的线。 xml已使用STS插件创建。

我尝试从xsds中删除版本号,但没有成功。

enter image description here

3 个答案:

答案 0 :(得分:2)

我前段时间遇到同样的问题,所有错误都是由jpa引起的 我将jpa配置移动到新的配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:jpa="http://www.springframework.org/schema/data/jpa"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    default-destroy-method="destroy"
    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-4.1.xsd
        http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.8.xsd">

    <context:component-scan base-package="com.some.validator" />
    <context:component-scan base-package="com.some.security.rest" />
    <jpa:repositories base-package="com.some.repository.path"
        entity-manager-factory-ref="entityManagerFactory" />
</beans>

一些maven进口:

    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-jpa</artifactId>
        <version>1.8.2.RELEASE</version>
    </dependency>

和spring框架版本

    <org.springframework-version>4.1.7.RELEASE</org.springframework-version>

尝试清理项目并使用maven

更新它

答案 1 :(得分:1)

我遇到了与你相同的问题,它来自xsd文件的版本。特别是,当我删除spring Context XSD版本时,问题就消失了。

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

<jpa:repositories base-package="com.app.repositories" />
</beans>

该XML文件不会为我生成任何验证错误。

干杯,

灵光

答案 2 :(得分:1)

为了解决这些XML验证问题,您可以尝试完全删除版本符号,如下所示,并让Spring加载通用架构位置。

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

包含通用或版本编辑的XSD架构位置不会对应用程序行为产生不同的结果。此外,尝试重新组织pom.xml并确保使用正确的版本解决了瞬态依赖关系。

这个决议的一个奇怪的部分是它在很少的应用程序中对我有用,但在我得到同样错误的其他应用程序中无法工作。对我来说,有时候将版本编辑XSDs更改为通用版,然后再将其更改回版本编辑版。 Eclipse Luna- tic 行为!

PS:没有针对Eclipse爱好者的冒犯。