Spring BeanDefinition及读取、注册
来源:互联网 发布:centos开启3306端口 编辑:程序博客网 时间:2024/06/07 17:40
BeanDefinition及其实现类
这个接口描述bean的结构,它集成了BeanMetadataElement和AttributeAccessor。
1.AttributeAccessor接口
类似于map,具有保存和访问name/value属性的能力。
public interface AttributeAccessor { void setAttribute(String name, Object value); Object getAttribute(String name); Object removeAttribute(String name); boolean hasAttribute(String name); String[] attributeNames(); }
2.BeanmetadataElement接口
访问source(配置源)的能力。
public interface BeanMetadataElement { Object getSource(); }
3.BeanDeinition接口
定义设置、获取一个BeanDefinition属性方法。
public interface BeanDefinition extends AttributeAccessor, BeanMetadataElement { //单例或原型 String SCOPE_SINGLETON = ConfigurableBeanFactory.SCOPE_SINGLETON; String SCOPE_PROTOTYPE = ConfigurableBeanFactory.SCOPE_PROTOTYPE; //Bean角色 int ROLE_APPLICATION = 0; int ROLE_SUPPORT = 1; int ROLE_INFRASTRUCTURE = 2; // 返回/设置父BeanDefinition String getParentName(); void setParentName(String parentName); //返回/设置 当前的BeanClassName(不等于最终Bean的名称) String getBeanClassName(); void setBeanClassName(String beanClassName); //返回设置 factory bean name String getFactoryBeanName(); void setFactoryBeanName(String factoryBeanName); String getFactoryMethodName(); void setFactoryMethodName(String factoryMethodName); String getScope(); void setScope(String scope); boolean isLazyInit(); void setLazyInit(boolean lazyInit); String[] getDependsOn(); void setDependsOn(String... dependsOn); boolean isAutowireCandidate(); void setAutowireCandidate(boolean autowireCandidate); boolean isPrimary(); void setPrimary(boolean primary); ConstructorArgumentValues getConstructorArgumentValues(); MutablePropertyValues getPropertyValues(); boolean isSingleton(); boolean isPrototype(); boolean isAbstract(); int getRole(); String getDescription(); String getResourceDescription(); BeanDefinition getOriginatingBeanDefinition();
}
子接口和实现类
1.AnnotatedBeanDefinition接口
这个接口可以获取BeanDefintion注解相关数据。
2.AbstractBeanDefintion
这个抽象类的构造方法设置了BeanDefinition的默认属性,重写equals, hashCode, toString方法。
3.ChildBeanDefinition
可以从父BeanDefinition中集成构造方法、属性等。
4.RootBeanDefinition
代表一个从配置源(XML Java Config等)中生成的BeanDefinition
5.GenericBeanDefinitioin
是ChildBeanDefinition和RootBeanDefinition更好的替代者
6.AnnotatedGenericBeanDefinition
对应注解@Bean。
BeanDefinitionHolder
持有一个BeanDefinition,名称 和别名数组。在Spring内部,它用来临时保存BeanDefinition来传递BeanDefinition。
public class BeanDefinitionHolder implements BeanMetadataElement { private final BeanDefinition beanDefinition; private final String beanName; private final String[] aliases; public BeanDefinitionHolder(BeanDefinition beanDefinition, String beanName, String[] aliases) { Assert.notNull(beanDefinition, "BeanDefinition must not be null"); Assert.notNull(beanName, "Bean name must not be null"); this.beanDefinition = beanDefinition; this.beanName = beanName; this.aliases = aliases; } public BeanDefinition getBeanDefinition() { return this.beanDefinition; } public String getBeanName() { return this.beanName; } public String[] getAliases() { return this.aliases; } //其他方法...省略
BeanDefinitionRegistry接口
这个接口定义了注册、获取BeanDefinition的方法。
public interface BeanDefinitionRegistry extends AliasRegistry { //注册一个BeanDefinition void registerBeanDefinition(String beanName, BeanDefinition beanDefinition) throws BeanDefinitionStoreException; //根据name,从自己持有的多个BeanDefinition 中 移除一个 void removeBeanDefinition(String beanName) throws NoSuchBeanDefinitionException; // 获取某个BeanDefinition BeanDefinition getBeanDefinition(String beanName) throws NoSuchBeanDefinitionException; boolean containsBeanDefinition(String beanName);//是否包含 String[] getBeanDefinitionNames();//获取所有名称 int getBeanDefinitionCount();//获取持有的BeanDefinition数量 boolean isBeanNameInUse(String beanName); //判断某个BeanDefinition是否在使用}
实现类有SimpleBeanDefinitionRegistry, DefaultListableBeanFactory, GenericApplicationContext等。
BeanDefinitionReader接口
BeanDefintionRegistry接口一次只能注册一个BeanDefinition,而且只能自己构造BeanDefinition类来注册。BeanDefintionReader解决了这些问题,它一般可以使用BeanDefinitionRegistry构造,然后通过#loadBeanDefinitions等方法,把“配置源”转化为多个BeanDefinition并注册到BeanDefinitionRegistry中。
阅读全文
0 0
- Spring BeanDefinition及读取、注册
- 【Spring4揭秘 基础5】BeanDefinition及读取、注册
- spring beandefinition
- spring BeanDefinition
- Spring源码解析-BeanDefinition在IOC容器中的注册(三)
- spring源码阅读(八)之BeanDefinition注册
- spring源码(8)注册解析的BeanDefinition
- Spring源码阅读--BeanDefinition 在 IOC 容器中的注册
- bean标签的解析及注册(二)解析BeanDefinition
- spring学习(四)xml文件的BeanDefinition读取
- bean标签的解析及注册(四)注册解析的beanDefinition
- 理解spring的BeanDefinition和配置文件(原文标题:动态注册bean到spring容器)
- 7-spring源码3.2.18解读+spring技术内幕(关于BeanDefinition的注册)
- Spring源码阅读 --BeanDefinition
- spring BeanDefinition的加载
- spring 源码 beanDefinition.getMethodOverrides()
- Spring源码阅读之IoC容器初始化3 -- BeanDefinition在IoC容器中的注册
- Spring源码分析--Ioc容器定位解析资源文件并注册BeanDefinition
- Android使用SVG矢量图打造酷炫动画效果
- Gradle下载与环境变量配置
- scikit-learn 中文文档-集成方法-监督学习|ApacheCN
- C++进阶—>Socket通信那点事
- 129. Sum Root to Leaf Numbers
- Spring BeanDefinition及读取、注册
- LeetCode.232 Implement Queue using Stacks
- 刷新HorizontalScrollView
- 《算法竞赛入门经典》第十章 数学概念与方法 UVa11582(幂取模,循环规律,模算术)
- 前端学习 | 使用webpack构建React项目
- tomcat7之添加管理员账户
- Fragment学习
- Android四大组件之广播总结
- 开发工程师面试总结