0

出于好奇,我将 bean.xml 中的 bean 的 id 留空。我期待着“bean id is not defined”或“bean id can't be null”之类的异常,但实际上,我得到了以下异常 -

cvc-datatype-valid.1.2.1: '' is not a valid value for 'NCName'.

它说明了什么?

完全例外是 -

06:26:18.262 [main] DEBUG org.springframework.beans.factory.xml.PluggableSchemaResolver - Found XML schema [http://www.springframework.org/schema/beans/spring-beans-3.0.xsd] in classpath: org/springframework/beans/factory/xml/spring-beans-3.0.xsd
Exception in thread "main" org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 13 in XML document from class path resource [beans.xml] is invalid; nested exception is org.xml.sax.SAXParseException; lineNumber: 13; columnNumber: 94; cvc-datatype-valid.1.2.1: '' is not a valid value for 'NCName'.
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:399)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:336)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:304)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:181)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:217)

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 id = "employee" class = "com.test.springboot.spring_boot_example.Employee" >
      <property name = "name" value = "Arvind"/>
       <property name = "address" ref = "address"/>
   </bean>

   <bean id = "" class = "com.test.springboot.spring_boot_example.Address" scope="prototype">
      <property name = "houseNumber" value = "64"/>

   </bean>



</beans>
4

1 回答 1

2

It's because the xml will not validate against the DTD

Since the id property is expected to be an NCName the xml parser will throw the exception. An NCName is not allowed to be empty.

There is also an excellent q/a here to read up more about how it's used

于 2018-02-21T01:16:32.813 回答