02、Spring常用註解一@Lazy

1. 概述

默認情況下,Spring會在應用程序上下文的啓動時創建所有單例bean。這背後的原因很簡單:立即避免和檢測所有可能的錯誤,而不是在運行時。但是,有些情況下我們需要創建一個bean,而不是在應用程序上下文啓動時,而是在我們請求時。就需要用到@Lazy來進行懶加載。

懶加載主要針對單實例bean。Spring默認在容器啓動的時候創建對象,而懶加載目的是爲了在容器啓動時候不創建對象,僅當第一次使用 (獲取) bean 的時候才創建並初始化。

2. 測試@lazy的作用

  • 新增配置類Cap4MainConfig,不加@lazy
@Configuration
public class Cap4MainConfig {
    @Bean
    public Person person() {
        System.out.println("給容器添加person");
        return new Person("cap4", 15);
    }
}
  • 編寫測試類Cap4Test
public class Cap4Test {
    @Test
    public void test1() {
        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(Cap4MainConfig.class);
        System.out.println("IOC容器創建完成");
        Person person = (Person) context.getBean("person");
    }
}

結果如下:
在這裏插入圖片描述
很明顯,不加@lazy的話,在容器創建完成前,person Bean已經創建並加入到容器當中。
下面修改配置加上@Lazy

@Configuration
public class Cap4MainConfig {
    @Bean
    @Lazy
    public Person person() {
        System.out.println("給容器添加person");
        return new Person("cap4", 15);
    }
}

結果如下:
在這裏插入圖片描述

可以發現,當IOC容器創建完全,person Bean還未創建,只有執行

Person person = (Person) context.getBean("person");

纔會創建person Bean並放入IOC容器中。

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