Spring中的@Lazy注解簡析


@Lazy 的屬性

Spring IoC (ApplicationContext) 容器一般都會在啟動的時候實例化所有單實例 bean 。如果我們想要
Spring 在啟動的時候延遲加載 bean,即在調用某個 bean 的時候再去初始化,那么就可以使用 @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 , 看控制台是否會打印。如果有打印,代表調用了構造器。

結果

img

在配置類打上 @Lazy 注解

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

再來看輸出結果


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


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

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM