我遇到了问题:
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.xsd" >
<bean id="spaceship" class="com.examples.spring.Cruiser">
<constructor-arg ref="energyweapon" />
<constructor-arg name="str" value="hello" />
</bean>
<bean id="energyweapon" class="com.examples.spring.PlasmaCannon" />
</beans>
尽管IDEA错误,我的项目仍然成功编译并运行。有什么问题吗?
Gradle安装:
------------------------------------------------------------
Gradle 2.14
------------------------------------------------------------
Build time: 2016-06-14 07:16:37 UTC
Revision: cba5fea19f1e0c6a00cc904828a6ec4e11739abc
Groovy: 2.4.4
Ant: Apache Ant(TM) version 1.9.6 compiled on June 29 2015
JVM: 1.8.0_73 (Oracle Corporation 25.73-b02)
OS: Windows 7 6.1 amd64
的build.gradle:
group 'com.examples.spring'
version '1.0-SNAPSHOT'
apply plugin: 'java'
sourceCompatibility = 1.5
repositories {
mavenCentral()
}
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.11'
compile 'org.springframework:spring-context:4.3.1.RELEASE'
}
Intellij IDEA:
IntelliJ IDEA社区版2016.1.3
答案 0 :(得分:1)
看起来由于某些原因,IDEA正在查看较旧的spring-beans.xsd
来验证您的文档。在name
中使用<constructor-arg>
属性为correct in the documentation。我有几个想法:
spring-beans
依赖项的直接引用,但不应该这样做。xsi:schemalocation
中的XSD路径从http://www.springframework.org/schema/beans/spring-beans.xsd
更改为http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
。这应该这样做,但是当您更新到更新版本的Spring时,您可能需要更新版本号。 (我倾向于使用特定版本,只是为了强迫自己在更新Spring时浏览每个文件,但是可能没有理由强迫自己这样做,因为它应该工作你是这样做的。)答案 1 :(得分:0)
来自文档xsd文件:
构造函数参数列表中参数的确切名称。 只需要避免含糊不清,例如在2个参数的情况下 完全相同的类型。 注意:这需要调试符号 存储在类文件中以反省参数名称!
第一部分是告诉这不是必要的属性,你可以只设置值,spring会按顺序自动装配,第二部分我不确定是什么意思,但这可能是你看到和错误的原因。