spring bean加载对象简介
来源:互联网 发布:家庭用网络交换机 编辑:程序博客网 时间:2024/05/17 08:50
BeanFactory
InstantiationStrategy
BeanDefinition加入到注册中,并由BeanFactoryPostProcessor的实现类处理后,需要由InstantiationStrategy负责实例化。
BeanDefinitionRegistry
该类的作用主要是向注册表中注册 BeanDefinition 实例,完成 注册的过程。
public interface BeanDefinitionRegistry extends AliasRegistry { // 关键 -> 往注册表中注册一个新的 BeanDefinition 实例 void registerBeanDefinition(String beanName, BeanDefinition beanDefinition)throws BeanDefinitionStoreException; // 移除注册表中已注册的 BeanDefinition 实例 void removeBeanDefinition(String beanName) throws NoSuchBeanDefinitionException; // 从注册中取得指定的 BeanDefinition 实例 BeanDefinition getBeanDefinition(String beanName) throws NoSuchBeanDefinitionException; // 判断 BeanDefinition 实例是否在注册表中(是否注册) boolean containsBeanDefinition(String beanName); // 取得注册表中所有 BeanDefinition 实例的 beanName(标识) String[] getBeanDefinitionNames(); // 返回注册表中 BeanDefinition 实例的数量 int getBeanDefinitionCount(); // beanName(标识)是否被占用 boolean isBeanNameInUse(String beanName);}
BeanFactoryPostProcessor
当spring初始化好BenaDefinnitionMap之后,提供了一个接口BeanFactoryPostProcessor,允许我们开发者自定义的去修改BeanFactory中的内容,这也是符合“spring”的开闭原则
public interface BeanFactoryPostProcessor { /** * 这里提供了修改beanFacotry的机会 */ void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException;}
PropertyEditorRegistry
Spring大部分默认属性编辑器都直接扩展于java.beans.PropertyEditorSupport类,用户也可以通过扩展PropertyEditorSupport实现自己的属性编辑器
PropertySource
属性源,key-value属性对抽象,比如用于配置数据PropertyResolver
public interface PropertyResolver { //是否包含某个属性 boolean containsProperty(String key); //获取属性值 如果找不到返回null String getProperty(String key); //获取属性值,如果找不到返回默认值 String getProperty(String key, String defaultValue); //获取指定类型的属性值,找不到返回null <T> T getProperty(String key, Class<T> targetType); //获取指定类型的属性值,找不到返回默认值 <T> T getProperty(String key, Class<T> targetType, T defaultValue); //获取属性值为某个Class类型,找不到返回null,如果类型不兼容将抛出ConversionException <T> Class<T> getPropertyAsClass(String key, Class<T> targetType); //获取属性值,找不到抛出异常IllegalStateException String getRequiredProperty(String key) throws IllegalStateException; //获取指定类型的属性值,找不到抛出异常IllegalStateException <T> T getRequiredProperty(String key, Class<T> targetType) throws IllegalStateException; //替换文本中的占位符(${key})到属性值,找不到不解析 String resolvePlaceholders(String text); //替换文本中的占位符(${key})到属性值,找不到抛出异常IllegalArgumentException String resolveRequiredPlaceholders(String text) throws IllegalArgumentException; }
BeanDefinition
这个接口描述bean的结构,对应XML中的< bean >或者配置类中的@Bean 它集成了BeanMetadataElement和AttributeAccessorPropertyValues
包含了一个或者多个PropertyValue对象,通常用作特定的一个目的bean的属性更新
AttributeAccessor
接口定义了最基本的对任意对象的元数据的修改或者获取
BeanPostProcessor
BeanPostProcessor 主要对其他Bean进行处理,例如为其他Bean生成代理等。
public interface BeanPostProcessor { //实例化、依赖注入完毕,在调用显示的初始化之前完成一些定制的初始化任务 Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException; //实例化、依赖注入、初始化完毕时执行 Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException; }
BeanWrapper
BeanWrapper是对Bean的包装SimpleAliasRegistry
SimpleAliasRegistry有一个属性aliasMap,是一个ConcurrentHashMap,用来存放bean的别名。在注册别名时使用的是方法:registerAlias
AnnotatedTypeMetadata
定义访问特定类型的注解
阅读全文
0 0
- spring bean加载对象简介
- Spring IOC-业务对象bean加载到bean工厂
- 【知识库】--spring --bean的加载简介(226)
- spring bean 根据包路径扫描对象加载过程
- Spring Bean的简介
- Spring-搞定bean加载
- spring bean 加载顺序
- spring bean 加载顺序
- spring延迟加载bean
- spring bean 加载顺序
- Spring 加载bean
- spring加载bean原理。
- spring动态加载Bean
- spring bean的加载
- spring bean 加载顺序
- Spring Bean 加载顺序
- spring加载bean
- Spring加载Bean
- 打包jar包时文件读取和第三方jar包的问题
- 各种开源协议以及如何选择
- 装箱问题
- 动画的使用1——Drawable Animation
- LeetCode Blog for course "Algorithms" -- Problem 1 & 2
- spring bean加载对象简介
- 【JAVASE_学习笔记】基础知识
- Cgroup和Namespace在测试中的使用(上)
- Keras学习笔记---一
- Oreacle数据库安装
- Cgroup和Namespace在测试中的使用(下)
- homework
- ServerStyle的应用
- 可折叠TextView控件使用:ExpandableTextView