Java 类org.springframework.core.DecoratingClassLoader 实例源码

项目:lams    文件:AbstractBeanFactory.java   
private Class<?> doResolveBeanClass(RootBeanDefinition mbd, Class<?>... typesToMatch) throws ClassNotFoundException {
    if (!ObjectUtils.isEmpty(typesToMatch)) {
        ClassLoader tempClassLoader = getTempClassLoader();
        if (tempClassLoader != null) {
            if (tempClassLoader instanceof DecoratingClassLoader) {
                DecoratingClassLoader dcl = (DecoratingClassLoader) tempClassLoader;
                for (Class<?> typeToMatch : typesToMatch) {
                    dcl.excludeClass(typeToMatch.getName());
                }
            }
            String className = mbd.getBeanClassName();
            return (className != null ? ClassUtils.forName(className, tempClassLoader) : null);
        }
    }
    return mbd.resolveBeanClass(getBeanClassLoader());
}
项目:class-guard    文件:AbstractBeanFactory.java   
private Class<?> doResolveBeanClass(RootBeanDefinition mbd, Class<?>... typesToMatch) throws ClassNotFoundException {
    if (!ObjectUtils.isEmpty(typesToMatch)) {
        ClassLoader tempClassLoader = getTempClassLoader();
        if (tempClassLoader != null) {
            if (tempClassLoader instanceof DecoratingClassLoader) {
                DecoratingClassLoader dcl = (DecoratingClassLoader) tempClassLoader;
                for (Class<?> typeToMatch : typesToMatch) {
                    dcl.excludeClass(typeToMatch.getName());
                }
            }
            String className = mbd.getBeanClassName();
            return (className != null ? ClassUtils.forName(className, tempClassLoader) : null);
        }
    }
    return mbd.resolveBeanClass(getBeanClassLoader());
}
项目:lams    文件:SpringPersistenceUnitInfo.java   
/**
 * This implementation delegates to the LoadTimeWeaver, if specified.
 */
@Override
public ClassLoader getNewTempClassLoader() {
    ClassLoader tcl = (this.loadTimeWeaver != null ? this.loadTimeWeaver.getThrowawayClassLoader() :
            new SimpleThrowawayClassLoader(this.classLoader));
    String packageToExclude = getPersistenceProviderPackageName();
    if (packageToExclude != null && tcl instanceof DecoratingClassLoader) {
        ((DecoratingClassLoader) tcl).excludePackage(packageToExclude);
    }
    return tcl;
}
项目:spring4-understanding    文件:SpringPersistenceUnitInfo.java   
/**
 * This implementation delegates to the LoadTimeWeaver, if specified.
 */
@Override
public ClassLoader getNewTempClassLoader() {
    ClassLoader tcl = (this.loadTimeWeaver != null ? this.loadTimeWeaver.getThrowawayClassLoader() :
            new SimpleThrowawayClassLoader(this.classLoader));
    String packageToExclude = getPersistenceProviderPackageName();
    if (packageToExclude != null && tcl instanceof DecoratingClassLoader) {
        ((DecoratingClassLoader) tcl).excludePackage(packageToExclude);
    }
    return tcl;
}
项目:spring4-understanding    文件:AbstractBeanFactory.java   
private Class<?> doResolveBeanClass(RootBeanDefinition mbd, Class<?>... typesToMatch) throws ClassNotFoundException {
    ClassLoader beanClassLoader = getBeanClassLoader();
    ClassLoader classLoaderToUse = beanClassLoader;
    if (!ObjectUtils.isEmpty(typesToMatch)) {
        // When just doing type checks (i.e. not creating an actual instance yet),
        // use the specified temporary class loader (e.g. in a weaving scenario).
        ClassLoader tempClassLoader = getTempClassLoader();
        if (tempClassLoader != null) {
            classLoaderToUse = tempClassLoader;
            if (tempClassLoader instanceof DecoratingClassLoader) {
                DecoratingClassLoader dcl = (DecoratingClassLoader) tempClassLoader;
                for (Class<?> typeToMatch : typesToMatch) {
                    dcl.excludeClass(typeToMatch.getName());
                }
            }
        }
    }
    String className = mbd.getBeanClassName();
    if (className != null) {
        Object evaluated = evaluateBeanDefinitionString(className, mbd);
        if (!className.equals(evaluated)) {
            // A dynamically resolved expression, supported as of 4.2...
            if (evaluated instanceof Class) {
                return (Class<?>) evaluated;
            }
            else if (evaluated instanceof String) {
                return ClassUtils.forName((String) evaluated, classLoaderToUse);
            }
            else {
                throw new IllegalStateException("Invalid class name expression result: " + evaluated);
            }
        }
        // When resolving against a temporary class loader, exit early in order
        // to avoid storing the resolved Class in the bean definition.
        if (classLoaderToUse != beanClassLoader) {
            return ClassUtils.forName(className, classLoaderToUse);
        }
    }
    return mbd.resolveBeanClass(beanClassLoader);
}
项目:spring    文件:ReflectiveLoadTimeWeaver.java   
@Override
public ClassLoader getThrowawayClassLoader() {
    if (this.getThrowawayClassLoaderMethod != null) {
        ClassLoader target = (ClassLoader)
                ReflectionUtils.invokeMethod(this.getThrowawayClassLoaderMethod, this.classLoader);
        return (target instanceof DecoratingClassLoader ? target :
                new OverridingClassLoader(this.classLoader, target));
    }
    else {
        return new SimpleThrowawayClassLoader(this.classLoader);
    }
}
项目:spring    文件:AbstractBeanFactory.java   
private Class<?> doResolveBeanClass(RootBeanDefinition mbd, Class<?>... typesToMatch) throws ClassNotFoundException {
    ClassLoader beanClassLoader = getBeanClassLoader();
    ClassLoader classLoaderToUse = beanClassLoader;
    if (!ObjectUtils.isEmpty(typesToMatch)) {
        // When just doing type checks (i.e. not creating an actual instance yet),
        // use the specified temporary class loader (e.g. in a weaving scenario).
        ClassLoader tempClassLoader = getTempClassLoader();
        if (tempClassLoader != null) {
            classLoaderToUse = tempClassLoader;
            if (tempClassLoader instanceof DecoratingClassLoader) {
                DecoratingClassLoader dcl = (DecoratingClassLoader) tempClassLoader;
                for (Class<?> typeToMatch : typesToMatch) {
                    dcl.excludeClass(typeToMatch.getName());
                }
            }
        }
    }
    String className = mbd.getBeanClassName();
    if (className != null) {
        Object evaluated = evaluateBeanDefinitionString(className, mbd);
        if (!className.equals(evaluated)) {
            // A dynamically resolved expression, supported as of 4.2...
            if (evaluated instanceof Class) {
                return (Class<?>) evaluated;
            }
            else if (evaluated instanceof String) {
                return ClassUtils.forName((String) evaluated, classLoaderToUse);
            }
            else {
                throw new IllegalStateException("Invalid class name expression result: " + evaluated);
            }
        }
        // When resolving against a temporary class loader, exit early in order
        // to avoid storing the resolved Class in the bean definition.
        if (classLoaderToUse != beanClassLoader) {
            return ClassUtils.forName(className, classLoaderToUse);
        }
    }
    return mbd.resolveBeanClass(beanClassLoader);
}
项目:class-guard    文件:SpringPersistenceUnitInfo.java   
/**
 * This implementation delegates to the LoadTimeWeaver, if specified.
 */
@Override
public ClassLoader getNewTempClassLoader() {
    ClassLoader tcl = (this.loadTimeWeaver != null ? this.loadTimeWeaver.getThrowawayClassLoader() :
            new SimpleThrowawayClassLoader(this.classLoader));
    String packageToExclude = getPersistenceProviderPackageName();
    if (packageToExclude != null && tcl instanceof DecoratingClassLoader) {
        ((DecoratingClassLoader) tcl).excludePackage(packageToExclude);
    }
    return tcl;
}