精品一区二区中文在线,无遮挡h肉动漫在线观看,国产99视频精品免视看9,成全免费高清大全

spring bean parse -電腦資料

電腦資料 時間:2019-01-01 我要投稿
【salifelink.com - 電腦資料】

    BeanDefinitionParserDelegate

    解析

    如果id為空,就將name中的第一個值賦給id

    Entry-->BeanEntry

    public final class ParseState {

    /**

    * Tab character used when rendering the tree-style. representation.

    */

    private static final char TAB = '\t';

    /**

    * Internal {@link Stack} storage.

    */

    private final Stack state;

    /**

    * Create a new {@code ParseState} with an empty {@link Stack}.

    */

    public ParseState() {

    this.state = new Stack();

    }

    /**

    * Create a new {@code ParseState} whose {@link Stack} is a {@link Object#clone clone}

    * of that of the passed in {@code ParseState}.

    */

    @SuppressWarnings("unchecked")

    private ParseState(ParseState other) {

    this.state = (Stack) other.state.clone();

    }

    /**

    * Add a new {@link Entry} to the {@link Stack}.

    */

    public void push(Entry entry) {

    this.state.push(entry);

    }

    /**

    * Remove an {@link Entry} from the {@link Stack}.

    */

    public void pop() {

    this.state.pop();

    }

    /**

    * Return the {@link Entry} currently at the top of the {@link Stack} or

    * {@code null} if the {@link Stack} is empty.

    */

    public Entry peek() {

    return this.state.empty() ? null : this.state.peek();

    }

    /**

    * Create a new instance of {@link ParseState} which is an independent snapshot

    * of this instance.

    */

    public ParseState snapshot() {

    return new ParseState(this);

    }

    /**

    * Returns a tree-style. representation of the current {@code ParseState}.

    */

    @Override

    public String toString() {

    StringBuilder sb = new StringBuilder();

    for (int x = 0; x < this.state.size(); x++) {

    if (x > 0) {

    sb.append('\n');

    for (int y = 0; y < x; y++) {

    sb.append(TAB);

    }

    sb.append("-> ");

    }

    sb.append(this.state.get(x));

    }

    return sb.toString();

    }

    /**

    * Marker interface for entries into the {@link ParseState}.

    */

    public interface Entry {

    }

    }

    public class BeanEntry implements ParseState.Entry {

    private String beanDefinitionName;

    /**

    * Creates a new instance of {@link BeanEntry} class.

    * @param beanDefinitionName the name of the associated bean definition

    */

    public BeanEntry(String beanDefinitionName) {

    this.beanDefinitionName = beanDefinitionName;

    }

    @Override

    public String toString() {

    return "Bean '" + this.beanDefinitionName + "'";

    }

    }

    BeanDefinition的實例:GenericBeanDefinition bd = new GenericBeanDefinition();

    AbstractBeanDefinition-->BeanMetadataAttributeAccessor

    public class BeanMetadataAttributeAccessor extends AttributeAccessorSupport implements BeanMetadataElement {

    private Object source;

    ........

    }

    public abstract class AttributeAccessorSupport implements AttributeAccessor, Serializable {

    /** Map with String keys and Object values */

    private final Map attributes = new LinkedHashMap(0);

    ....

    }

    BeanMetadataAttribute attribute :

    public class BeanMetadataAttribute implements BeanMetadataElement {

    private final String name;

    private final Object value;

    private Object source;

    }

    LookupOverride:

    public class LookupOverride extends MethodOverride {

    private final String beanName;

    private Method method;

    .......}

    public abstract class MethodOverride implements BeanMetadataElement {

    private final String methodName;

    private boolean verloaded = true;

    private Object source;

    ...........}

    public class MethodOverrides {

    private final Set verrides = new LinkedHashSet(0);

    ......}

    ReplaceOverride:

    public class ReplaceOverride extends MethodOverride {

    private final String methodReplacerBeanName;

    private List typeIdentifiers = new LinkedList();

    ,

spring bean parse

電腦資料

spring bean parse》(http://salifelink.com)。。。。。}

    constructor-arg:只有一個子元素(must not contain more than one sub-element)

    is only allowed to contain either 'ref' attribute OR 'value' attribute OR sub-element

    ref作為屬性,則轉(zhuǎn)換成RuntimeBeanReference

    public class RuntimeBeanReference implements BeanReference {

    private final String beanName;

    private final boolean toParent;

    private Object source;

    。。。。}

    如果value作為屬性則轉(zhuǎn)換成:

    public class TypedStringValue implements BeanMetadataElement {

    private String value;

    private volatile Object targetType;

    private Object source;

    private String specifiedTypeName;

    private volatile boolean dynamic;

    。。。。。}

    構(gòu)造函數(shù)解析存放的對象:

    public class ConstructorArgumentValues {

    private final Map indexedArgumentValues = new LinkedHashMap(0);

    private final List genericArgumentValues = new LinkedList();

    。。。。}

    對應(yīng)

    沒有index的利用genericArgumentValues存放

    Property解析:

    public class PropertyValue extends BeanMetadataAttributeAccessor implements Serializable {

    private final String name;

    private final Object value;

    private Object source;

    private boolean ptional = false;

    private boolean converted = false;

    private Object convertedValue;

    /** Package-visible field that indicates whether conversion is necessary */

    volatile Boolean conversionNecessary;

    /** Package-visible field for caching the resolved property path tokens */

    transient volatile Object resolvedTokens;

    .......}

    其中PropertyValue 中的value保存的類型就是ManagedList

    public abstract class AbstractBeanDefinition extends BeanMetadataAttributeAccessor

    implements BeanDefinition, Cloneable {

    .........

    private MutablePropertyValues propertyValues;

    .........

    } 作為存儲默認元素的屬性

    Qualifier子元素的解析:

    public class AutowireCandidateQualifier extends BeanMetadataAttributeAccessor {

    public static String VALUE_KEY = "value";

    private final String typeName;

    ......

    }

    public class BeanMetadataAttributeAccessor extends AttributeAccessorSupport implements BeanMetadataElement {

    private Object source;

    ..............

    }

    public abstract class AttributeAccessorSupport implements AttributeAccessor, Serializable {

    /** Map with String keys and Object values */

    private final Map attributes = new LinkedHashMap(0);

    ........

    }

最新文章
主站蜘蛛池模板: 国产精品偷伦视频免费观看了| 中文字幕人成乱码熟女| 日本xxx在线观看免费播放| 无遮挡h肉动漫在线观看| 国产精品免费久久久久影院| 丰满少妇又爽又紧又丰满在线观看| 艳妇乳肉豪妇荡乳AV无码福利| 欧美在线看片a免费观看| caoporm国产精品视频免费| 99re66在线观看精品免费| 深夜视频在线免费| 最新欧美精品一区二区三区| 少妇的丰满3中文字幕| 伊人久久大香线蕉亚洲| 欧美激情一区二区三区| 精品久久久久中文字幕一区| 丰满少妇又爽又紧又丰满在线观看| 免费A级毛视频| 老熟女一区二区免费| 国产AV天堂| 国产精品第12页| 少妇的丰满3中文字幕| 国产又黄又爽又刺激的免费网址| 一个人看的视频www| 国产精品亚洲欧美大片在线看| 777米奇色888狠狠俺去啦| 妺妺窝人体色WWW看人体| 精品国产亚洲AV麻豆| 亚洲综合激情另类小说区| 玩弄丰满熟妇xxxxx性| 最好的观看2018中文| 日韩AV无码一区二区三区不卡毛片| 亚洲乱码AV中文一区二区| 天天摸天天做天天爽| 欧洲美女与动性zozozo| 性欧美视频videos6一9| 精品国精品国产自在久国产应用| 在线天堂中文在线资源网| 精品久久久久久久久中文字幕| 免费A级毛片无码久久版| 免费A级毛片在线播放不收费|