springsource 의 Entity Resolver

4458 단어 spring
Entity Resolver 의 역할 은 프로젝트 자체 가 DTD / XSD 성명 을 찾 는 방법 을 제공 하 는 것 입 니 다. 즉, 프로그램 이 DTD / XSD 를 찾 는 과정 을 실현 하 는 것 입 니 다. 예 를 들 어 DTD / XSD 파일 을 프로젝트 의 어 딘 가 에 두 고 이 글 을 읽 고 SAX 에 되 돌려 주면 됩 니 다.이렇게 하면 인터넷 을 통 해 상응하는 성명 을 찾 는 것 을 피 할 수 있다.
org.springframework.beans.factory.xml.PluggableSchemaResolver
    @Override
    public InputSource resolveEntity(String publicId, String systemId) throws IOException {
        if (logger.isTraceEnabled()) {
            logger.trace("Trying to resolve XML entity with public id [" + publicId +
                    "] and system id [" + systemId + "]");
        }

        if (systemId != null) {
            String resourceLocation = getSchemaMappings().get(systemId);
            if (resourceLocation != null) {
                Resource resource = new ClassPathResource(resourceLocation, this.classLoader);
                try {
                    InputSource source = new InputSource(resource.getInputStream());
                    source.setPublicId(publicId);
                    source.setSystemId(systemId);
                    if (logger.isDebugEnabled()) {
                        logger.debug("Found XML schema [" + systemId + "] in classpath: " + resourceLocation);
                    }
                    return source;
                }
                catch (FileNotFoundException ex) {
                    if (logger.isDebugEnabled()) {
                        logger.debug("Couldn't find XML schema [" + systemId + "]: " + resource, ex);
                    }
                }
            }
        }
        return null;
    }

org.springframework.core.io.support.PropertiesLoaderUtils
    public static Properties loadAllProperties(String resourceName, ClassLoader classLoader) throws IOException {
        Assert.notNull(resourceName, "Resource name must not be null");
        ClassLoader classLoaderToUse = classLoader;
        if (classLoaderToUse == null) {
            classLoaderToUse = ClassUtils.getDefaultClassLoader();
        }
        Enumeration urls = (classLoaderToUse != null ? classLoaderToUse.getResources(resourceName) :
                ClassLoader.getSystemResources(resourceName));
        Properties props = new Properties();
        while (urls.hasMoreElements()) {
            URL url = urls.nextElement();
            URLConnection con = url.openConnection();
            ResourceUtils.useCachesIfNecessary(con);
            InputStream is = con.getInputStream();
            try {
                if (resourceName.endsWith(XML_FILE_EXTENSION)) {
                    props.loadFromXML(is);
                }
                else {
                    props.load(is);
                }
            }
            finally {
                is.close();
            }
        }
        return props;
    }

reference
java. util. Properties 클래스 사용

좋은 웹페이지 즐겨찾기