spring bean加载对象简介

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和AttributeAccessor

PropertyValues

包含了一个或者多个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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值