⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 abstractannotationbeanpostprocessor.java

📁 CAS在Tomcat中实现单点登录项目,单点登录(Single Sign On , 简称 SSO )是目前比较流行的服务于企业业务整合的解决方案之一
💻 JAVA
字号:
/* * Copyright 2007 The JA-SIG Collaborative. All rights reserved. See license * distributed with this file and available online at * http://www.uportal.org/license.html */package org.jasig.cas.util.annotation;import java.lang.annotation.Annotation;import java.lang.reflect.Field;import java.util.ArrayList;import java.util.Arrays;import java.util.List;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import org.springframework.beans.BeansException;import org.springframework.beans.factory.config.InstantiationAwareBeanPostProcessorAdapter;/** * Abstract processor to assist in retrieving fields to check for annotations. *  * @author Scott Battaglia * @version $Revision: 1.5 $ $Date: 2007/04/13 20:01:22 $ * @since 3.1 */public abstract class AbstractAnnotationBeanPostProcessor extends    InstantiationAwareBeanPostProcessorAdapter {    protected final Log log = LogFactory.getLog(getClass());    public final Object postProcessBeforeInitialization(final Object bean,        final String beanName) throws BeansException {        final List<Field> fields = new ArrayList<Field>();        final Class< ? > clazz = bean.getClass();        final Class< ? >[] classes = clazz.getClasses();        addDeclaredFields(clazz, fields);        for (int i = 0; i < classes.length; i++) {            addDeclaredFields(classes[i], fields);        }        try {            for (final Field field : fields) {                final boolean originalValue = field.isAccessible();                field.setAccessible(true);                final Annotation annotation = field                    .getAnnotation(getSupportedAnnotation());                if (annotation != null) {                    processField(field, annotation, bean, beanName);                }                field.setAccessible(originalValue);            }        } catch (final IllegalAccessException e) {            log.warn("Could not access field: " + e.getMessage(), e);        }        return bean;    }    private final void addDeclaredFields(final Class< ? > clazz,        final List<Field> fields) {        fields.addAll(Arrays.asList(clazz.getDeclaredFields()));    }    /**     * @param field the field to check     * @param bean the bean to check     * @param beanName the name of the bean.     * @throws IllegalAccessException     */    protected abstract void processField(Field field, Annotation annotation,        Object bean, String beanName) throws IllegalAccessException;    protected abstract Class<? extends Annotation> getSupportedAnnotation();}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -