解析BeanDefinition之解析各种属性。
来源:互联网 发布:网络奇谈恐惧鸟电子版 编辑:程序博客网 时间:2024/06/05 14:18
// 硬编码解析默认bean的各种属性
parseBeanDefinitionAttributes(ele, beanName, containingBean, bd);
当我们创建了bean信息的承载实例后,便可以进行bean信息的各种属性解析了,首先我们进入parseBeanDefinitionAttributes方法。parseBeanDefinitionAttributes方法是对element所有元素属性进行解析,部分代码如下:
public AbstractBeanDefinition parseBeanDefinitionAttributes(Element ele, String beanName, BeanDefinition containingBean, AbstractBeanDefinition bd) {
// 解析scope属性并且判断scope与singleton两个属性只能指定其中之一,不可以同时出现,否则Spring将会报出异常
bd.setScope(ele.getAttribute(SCOPE_ATTRIBUTE);
// 解析singleton属性
bd.setSCope(TRUE_VALUE.equals(ele.getAttribute(SINGLETON_ATTRIBUTE)) ? BeanDefinition.SCOPE_SINGLETON : BeanDefinition.SCOPE_PROTOTYPE);
// 在嵌入BeanDefinition情况下且没有单独指定scope属性则使用父类默认的属性
bd.setScope(containingBean.getScope());
// 解析 abstract属性
bd.setAbstract(TRUE_VALUE.equals(ele.getAttribute(ABSTRACT_ATTRIBUTE)));
// 解析lazy-init属性,若没有设置或设置成其他字符都会被设置为false
bd.setLazyInit(TRUE_VALUE.equals(lazyInit));
// 解析autowire属性
bd.setAutowireMode(getAutowireMode(ele.getAttribute(AUTOWIRE_ATTRIBUTE)));
// 解析dependency-check属性
bd.setDependencyCheck(getDependencyCheck(ele.getAttribute(DEPENDENCY_CHECK_ATTRIBUTE)));
// 解析depends-on属性
bd.setDependsOn(StringUtils.tokenizeToStringArray(ele.getAttribute(DEPENDSON, MULTI_VALUE_ATTRIBUTE_DELIMITERS)));
// 解析autowire-candidate属性
bd.setAutowireCandidate(TRUE_VALUE.equals(autowireCandidate));
// 解析primary属性
bd.setPrimary(TRUE_VALUE.equals(ele.getAttribute(PRIMARY_ATTRIBUTE)));
// 解析init-method属性
bd.setInitMethodName(ele.getAttribute(INIT_METHOD_ATTRIBUTE));
// 解析destroy-method属性
bd.setDestroyMethodName(ele.getAttribute(DESTROY_METHOD_ATTRIBUTE));
// 解析factory-method属性
bd.setFactoryMethodName(ele.getAttribute(FACTORY_METHOD_ATTRIBUTE));
// 解析factory-bean属性
bd.setFactoryBeanName(ele.getAttribute(FACTORY_BEAN_ATTRIBUTE));
return bd;
}
- 解析BeanDefinition之解析各种属性。
- 解析BeanDefinition之创建用于属性承载的BeanDefinition。
- 解析BeanDefinition。
- 解析BeanDefinition之解析子元素meta.
- 解析BeanDefinition之解析子元素lookup-method。
- 解析BeanDefinition之解析子元素replaced-method
- 深入理解Spring系列之二:BeanDefinition解析
- UIView各种属性解析!
- SpringIoC初始化BeanDefinition解析——从Resource到BeanDefinition
- Flex Application各种属性解析
- SpringIoC初始化BeanDefinition解析——注册
- Spring源码阅读之IoC容器初始化2 -- BeanDefinition载入与解析
- spring 技术内幕--IOC初始化过程深入之BeanDefinition的载入和解析1
- bean标签的解析及注册(二)解析BeanDefinition
- android各种布局属性的解析
- ActionBar各种属性的详细解析
- Spring BeanFactory、ApplicationContext层次结构和BeanDefinition解析过程
- Spring源码解析-BeanDefinition在IOC容器中的注册(三)
- HDU 2830 Matrix Swapping II
- tensorflow_conv2d_max_pool卷积池化padding参数为SAME和VALID的区别
- 字符串-leetcode 557 Reverse Words in a String III
- PHP如何实现简单的接口
- label一点分享
- 解析BeanDefinition之解析各种属性。
- 解决viewpager嵌套滑动冲突,并保留侧滑菜单功能
- 决策树的相关概念
- FFMpeg处理RTMP流
- IPv4数据报
- [RK3288][Android6.0] RTC模块RX8010SJ硬件部分概要
- Ubuntu14.04 无法连接网络排查
- 用两个栈实现队列
- 拼凑钱币