我已经定义了以下事务管理器:
<tx:annotation-driven transaction-manager="txManager" mode="aspectj" />
并具有以下根元素:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
一切正常,但IntelliJ给我一个错误标记 模式= “切面” 说这是不允许的。我已经跟随它获取xsd的位置,它链接到tx 2.0 xsd - 这解释了错误消息,因为我需要2.5来使用模式注释。
是否有可能以某种方式向IntelliJ提示我应该向2.5而不是2.0进行验证?
答案 0 :(得分:8)
如果打开jar文件,schemaLocation
应根据此屏幕截图指向xsd:
然后你会看到IntelliJ有一堆不同版本的Spring的xsd文件:
这意味着您确实拥有所需的所有模式。
如果您的bean定义文件有问题,那么您的schemaLocation
必须指向Spring jar文件中的错误版本:
检查Settings | Schemas and DTDs
并确认您没有意外手动将其设置为指向错误的xsd文件:
如果错了,那么你必须使用减号删除该行。这将导致IntelliJ返回其默认值:
之后你应该看到与第一个屏幕截图相同的东西。
答案 1 :(得分:1)
我在尝试在同一个xml配置中使用spring安全性和bean时遇到了类似的问题。 IntelliJ坚持使用安全xsd版本2.0进行验证,尽管一切都告诉它使用版本3.1。
我能够让IntelliJ通过更改安全性和bean之间的默认命名空间来解决这个问题。
我最初有:
<beans:beans xmlns="http://www.springframework.org/schema/security"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:beans="http://www.springframework.org/schema/beans"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security.xsd">
所以我把它换成了:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:security="http://www.springframework.org/schema/security"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security.xsd">
之后,IntelliJ使用正确的xsd进行验证。我不确定这是IntelliJ的错误还是我做错了什么,但它现在有效。
希望这有助于将来。