//检测对{@link Resource}标识的XML文件执行哪种验证。如果文件具有{@code DOCTYPE}定义,则使用DTD验证,否则采用XSD验证。在接下来的方法中可以看到。 protectedintdetectValidationMode(Resource resource) { // 不可读,抛出 BeanDefinitionStoreException 异常 if (resource.isOpen()) { thrownewBeanDefinitionStoreException( "Passed-in Resource [" + resource + "] contains an open stream: " + "cannot determine validation mode automatically. Either pass in a Resource " + "that is able to create fresh streams, or explicitly specify the validationMode " + "on your XmlBeanDefinitionReader instance."); }
InputStream inputStream; try { inputStream = resource.getInputStream(); } catch (IOException ex) { thrownewBeanDefinitionStoreException( "Unable to determine validation mode for [" + resource + "]: cannot open InputStream. " + "Did you attempt to load directly from a SAX InputSource without specifying the " + "validationMode on your XmlBeanDefinitionReader instance?", ex); }
// <x> 获取相应的验证模式 try { //XmlValidationModeDetector上边已经定义 returnthis.validationModeDetector.detectValidationMode(inputStream); } catch (IOException ex) { thrownewBeanDefinitionStoreException("Unable to determine validation mode for [" + resource + "]: an error occurred whilst reading from the InputStream.", ex); } }