Spring 源码解析之BeanDefinition接口
2020-06-12 06:42
393 查看
BeanDefinition 用来管理JavaBean和JavaBean之间的依赖关系,Spring将JavaBean中的数据结构转化成BeanDefinition中的数据结构进行维护,继承了AttributeAccessor(用来附加和访问元数据的接口)和BeanMetadataElement(获取配置)两个接口
public interface BeanDefinition extends AttributeAccessor, BeanMetadataElement { //表示单例模式作用域的标识符 值为singleton String SCOPE_SINGLETON = ConfigurableBeanFactory.SCOPE_SINGLETON; //表示原型模式作用域的标识符 值为prototype String SCOPE_PROTOTYPE = ConfigurableBeanFactory.SCOPE_PROTOTYPE; /**定义的bean 设置了三种角色 *1. Application 主要角色,应用程序默认定义的 *2. Support 应用程序定义的比较大的对象,被认为足够重要的,足以引起注意 *3. Infarstructure Spring内容定义的,只在bean容器后台内部工作,与用户无关 **/ int ROLE_APPLICATION = 0; int ROLE_SUPPORT = 1; int ROLE_INFRASTRUCTURE = 2; //获得Bean容器定义的父定义的名称 String getParentName(); // 如果有父定义的话,在bean容器定义的名称上写入父定义的名称, void setParentName(String parentName); //返回bean定义的当前类名 //不一定是运行使用的实际类名,也可能是子类重写或继承其父类的名称 //不是运行的bean的最终类型,只是对单个bean定义级别上的解析 String getBeanClassName(); //重写bean定义的bean类名 //将原始类名替换成修改解析后的类名 void setBeanClassName(String beanClassName); //如果有FactoryBean的话,就返回FactoryBean的名称 String getFactoryBeanName(); //指定使用的FactoryBean,如果有的话 void setFactoryBeanName(String factoryBeanName); //返回 一个工厂方法,如果有的话 String getFactoryMethodName(); //指定工厂的方法,这个方法将通过构造函数参数,如果没有指定任何参数,就不带参数,在指定的FactoryBean上被调用,如果有的话,或者相当于一个本地Bean类里面的一个静态方法, 参数是静态的FactoryBean 名称,如果为null应该使用普通的构造函数创建例如getBeanClassName() void setFactoryMethodName(String factoryMethodName); //返回bean当前的目标作用域名称,如果还不知道就为null String getScope(); //重写这个bean的目标作用域,指定一个新的作用域名称 void setScope(String scope); //是否延迟初始化改bean //启动时候快速初始化,仅适用单例中 boolean isLazyInit(); //设置是否该延迟初始化这个bean,如果参数为false,则启动时就被初始化执行单例初始化的工厂 void setLazyInit(boolean lazyInit); //返回该bean所依赖的bean的名称 String[] getDependsOn(); //设置该bean所依赖的bean的名称,bean工厂将保证这些bean第一时间被初始化 void setDependsOn(String... dependsOn); //判断该bean是否自动连接到其他bean boolean isAutowireCandidate(); //设置该bean是否连接到其他bean void setAutowireCandidate(boolean autowireCandidate); //返回该bean是否是一个主要的被认为适合的连接对象 //如果返回true,对于多个连接对象,他将破坏这个连接平衡的局面 boolean isPrimary(); //设置该bean是否是一个被认为适合的连接对象 void setPrimary(boolean primary); //返回该bean的构造函数值,返回的实例可以在工厂后处理期修改,返回的值不为null ConstructorArgumentValues getConstructorArgumentValues(); //返回应用于bean新实例的属性值,返回的实例可以在工厂后处理期修改,返回的值不为null MutablePropertyValues getPropertyValues(); //返回是否是单例共享实例,所有呼叫都返回 boolean isSingleton(); //返回是否是原型独立实例,所有呼叫都返回 boolean isPrototype(); //bean是否是抽象的,不要实例化 boolean isAbstract(); //获取角色 Application ,Support,Infrastructure三种 int getRole(); //返回bean定义的可读描述 String getDescription(); //返回bean定义的配置描述,出现错误显示上下文 String getResourceDescription(); //返回原始的BeanDefinition,没有就为null //允许检索修饰bean的定义 //此方法直接返回发起者,遍历所有用于定义的原始的BeanDefinition BeanDefinition getOriginatingBeanDefinition(); }
相关文章推荐
- Spring源码阅读之IoC容器初始化2 -- BeanDefinition载入与解析
- 解析Spring源码(8)--BeanDefinitionParserDelegate
- Spring 3.2 源码解析 -- XML bean 元素到 BeanDefinition 解析过程
- 【spring源码分析】BeanDefinitionRegistryPostProcessor接口可自定义bean加入IOC
- Spring源码学习--Spring配置文件解析BeanDefinitionReader(二)
- Spring 3.2 源码解析 -- XML bean 元素到 BeanDefinition 解析过程
- Spring源码解析-BeanDefinition在IOC容器中的注册(三)
- 读spring源码(二)-XmlBeanDefinitionReader-解析BeanDefinition
- Spring关于beanDefinition解析部分的源码解读
- 6-spring源码3.2.18解读+spring技术内幕(关于BeanDefinition的载入和解析)
- spring源码(8)注册解析的BeanDefinition
- 辛星解析Spring3.2源码第二篇:BeanDefinitionReaderUtils
- Spring源码分析-BeanDefinition加载、解析和注册
- Spring源码之旅(3)_BeanDefinition的解析与注册
- 【Spring源码--IOC容器的实现】(三)BeanDefinition的载入和解析【I】
- Spring源码学习--Bean注入解析结果BeanDefinition
- spring 源码解读与设计详解:6 BeanDefinitionParserDelegate与资源解析
- spring系统架构源码解析BeanDefinition②
- 【Spring源码--IOC容器的实现】(三)BeanDefinition的载入和解析【II】
- Spring源码学习--Spring配置文件解析BeanDefinitionDocumentReader(三)