Spring中的 @Lazy註解簡析

Spring IoC (ApplicationContext) 容器一般都會在啓動的時候實例化所有單實例 bean 。如果我們想要 Spring 在啓動的時候延遲加載 bean,即在調用某個 bean 的時候再去初始化,那麼就可以使用 @Lazy 註解。


@Lazy 的屬性

value 取值有 true 和 false 兩個 默認值爲 true

true 表示使用 延遲加載, false 表示不使用,false 純屬多餘,如果不使用,不標註該註解就可以了。
Person 類

public class Person {
    private String name;
    private Integer age;

    public Person() {
    }

    public Person(String name, Integer age) {
        System.out.println(" 對象被創建了.............");
        this.name = name;
        this.age = age;
    }

  // 省略 getter setter 和 toString 方法
}

配置類 不標註 @Lazy 註解

public class LazyConfig {
    @Bean
    public Person person() {
        return new Person("李四", 55);
    }
}

測試

    @Test
    public void test5() {
        ApplicationContext ctx = new AnnotationConfigApplicationContext(LazyConfig.class);
    }

不獲取 bean , 看控制檯是否會打印。如果有打印,代表調用了構造器。

結果

在配置類打上 @Lazy 註解

public class LazyConfig {
    @Lazy
    @Bean
    public Person person() {
        return new Person("李四", 55);
    }
}

再來看輸出結果

T

沒有打印語句,對象沒有調用構造器,那麼方法也就沒有被創建。
@Lazy(value = false) 或者 @Lazy(false) 那麼對象會在初始化的時候被創建


@Lazy註解註解的作用主要是減少springIOC容器啓動的加載時間

當出現循環依賴時,也可以添加@Lazy

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