Spring學習----------(3)@lazy註解

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

public class MainConfig {

    //給aop容器註冊一個bean,類型爲返回值類型,默認bean id 是方法名,可以自定義

    /**
     * 主要針對單實例bean,默認容器啓動的時候創建對象
     * 懶加載: 容器啓動的時候不創建對象,僅當第一次使用(獲取)bean的時候才創建被初始化
     * @return
     */
    //@Lazy
    @Bean
    public Person person(){

        System.out.println("給容器中添加person........");
        return new Person("JJJ",12);
    }
}

不使用@Lazy註解時測試類

public class TestCap4 {

    @Test
    public void test01(){

        ApplicationContext applicationContext = new AnnotationConfigApplicationContext(MainConfig.class);

        System.out.println("IOC容器創建完成.....");
        applicationContext.getBean("person");

    }
}

測試結果:容器啓動時類已加載完成
在這裏插入圖片描述
使用@Lazy註解後

public class MainConfig {

    //給aop容器註冊一個bean,類型爲返回值類型,默認bean id 是方法名,可以自定義

    /**
     * 主要針對單實例bean,默認容器啓動的時候創建對象
     * 懶加載: 容器啓動的時候不創建對象,僅當第一次使用(獲取)bean的時候才創建被初始化
     * @return
     */
    @Lazy
    @Bean
    public Person person(){

        System.out.println("給容器中添加person........");
        return new Person("JJJ",12);
    }
}

測試結果:容器啓動的時候未創建對象,在獲取bean時,Person類才被加載,初始化
在這裏插入圖片描述
@Lazy註解的作用主要是減少springIOC容器啓動的加載時間
當出現循環依賴時,也可以添加@Lazy

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