📄 abstractannotationbeanpostprocessor.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 + -