第九章:Spring Bean生命週期

第九章:Spring Bean生命週期(Bean Lifecycle)

Spring Bean 元信息配置階段

  • BeanDefinition 配置
    • 面向資源
      • XML 配置
      • Properties 資源配置
    • 面向註解
    • 面向 API

  1. Properties 資源配置
user.(class) = org.geekbang.thinking.in.spring.ioc.overview.domain.User
user.id = 001
user.name = 小馬哥
user.city = HANGZHOU
public class BeanMetadataConfigurationDemo {

    public static void main(String[] args) {
        DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();
        // 實例化基於 Properties 資源 BeanDefinitionReader
        PropertiesBeanDefinitionReader beanDefinitionReader = new PropertiesBeanDefinitionReader(beanFactory);
        String location = "META-INF/user.properties";
        // 基於 ClassPath 加載 properties 資源
        Resource resource = new ClassPathResource(location);
        // 指定字符編碼 UTF-8
        EncodedResource encodedResource = new EncodedResource(resource, "UTF-8");
        int beanNumbers = beanDefinitionReader.loadBeanDefinitions(encodedResource);
        System.out.println("已加載 BeanDefinition 數量:" + beanNumbers);
        // 通過 Bean Id 和類型進行依賴查找
        User user = beanFactory.getBean("user", User.class);
        System.out.println(user);
    }

}

Spring Bean 元信息解析階段

  • 面向資源 BeanDefinition 解析
    • BeanDefinitionReader
    • XML 解析器 - BeanDefinitionParser
  • 面向註解 BeanDefinition 解析
    • AnnotationBeanDefinitionReader

Spring Bean 註冊階段


Spring BeanDefinition 合併階段


Spring Bean Class 加載階段

Spring Bean 實例化前階段

Spring Bean 實例化階段

Spring Bean 實例化後階段

Spring Bean 屬性賦值前階段

Spring Bean Aware 接口回調階段

Spring Bean 初始化前階段

Spring Bean 初始化階段

Spring Bean 初始化後階段

Spring Bean 初始化完成階段

Spring Bean 銷燬前階段

Spring Bean 銷燬階段

Spring Bean 垃圾收集

總結

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章