天天看點

spring源碼--IOC容器的實作:概述(2)引言

引言

上一篇分析了springIOC相關的核心接口,下面分析一下這些接口中用到的一些相關的類。

  • boolean BeanFactory .isTypeMatch(String name, ResolvableType typeToMatch)

    ResolvableType 可以看做spring對class類的增強,提供了一些spring需要的一些方法。比如:

    – boolean isAssignableFrom():判斷是否是某個指定類型的附列

    – ResovableType getSuperType() : 擷取父類的類型

    另外提供了一些靜态方法,友善初始化

    – static ResovableType forClass();

    – static ResovableType forField();

  • NamedBeanHolder AutowireCapableBeanFactory .resolveNamedBean(Class requiredType)

    NamedBeanHolder 是對實體類的簡單封裝,讓每個實體類有一個對應的名字

    spring源碼--IOC容器的實作:概述(2)引言
  • Object AutowireCapableBeanFactory .resolveDependency(DependencyDescriptor descriptor, String requestingBeanName) throws BeansException;

    DependencyDescriptor 封裝了依賴注入的相關資訊,包括需要被注入的屬性名稱,被注入的class,是否是懶注入等等。

    spring源碼--IOC容器的實作:概述(2)引言
    TypeConverter 是個接口,負責将值轉換為特定類型
    spring源碼--IOC容器的實作:概述(2)引言
  • void ConfigurableBeanFactory .setBeanExpressionResolver(BeanExpressionResolver resolver);

    BeanExpressionResolver 是将el表達式轉換為值得接口,該接口隻有一個方法

    spring源碼--IOC容器的實作:概述(2)引言
  • void ConfigurableBeanFactory .setConversionService(ConversionService conversionService);

    ConversionService 将指定類型轉換為特定類型

  • void ConfigurableBeanFactory .registerCustomEditor(Class requiredType, Class< ? extends PropertyEditor> propertyEditorClass);

    PropertyEditor 屬性編輯器,配合TypeConverter 和 ConversionService 來對spring容器裡的bean進行屬性指派。

  • void ConfigurableBeanFactory .addEmbeddedValueResolver(StringValueResolver valueResolver);

    StringValueResolver 解析String類型的值,比如解析placeholders

  • void ConfigurableBeanFactory .addBeanPostProcessor(BeanPostProcessor beanPostProcessor);

    BeanPostProcessor 是個重要的接口,指派bean的後置處理,之後會詳細分析。

  • Resource ResourceLoader .getResource(String location);

    Resource 封裝了spring資源檔案的相關資訊,比如路徑,輸入流等。

  • Environment EnvironmentCapable .getEnvironment();

    Environment 封裝了環境資訊,包括Profile

  • void ApplicationEventPublisher .publishEvent(ApplicationEvent event);

    ApplicationEvent 是容器發送各種事件的父接口,比如容器重新整理事件。

  • void ConfigurableApplicationContext .setEnvironment(ConfigurableEnvironment environment);

    ConfigurableEnvironment 繼承Environment,提供了設定profile的set,以及擷取的get方法,另外提供了一些新的方法。

  • void ConfigurableApplicationContext .addBeanFactoryPostProcessor(BeanFactoryPostProcessor beanFactoryPostProcessor);

    BeanFactoryPostProcessor beanFactory的後置處理器,很重要的接口。之後詳細分析

  • void ConfigurableApplicationContext .addApplicationListener(ApplicationListener<?> listener);

    ApplicationListener 容器的監聽器。

以上是上篇接口中出現的相關實體類。

繼續閱讀