1. 程式人生 > 其它 >Spring - 例項化與延遲例項化

Spring - 例項化與延遲例項化

目錄

前言

上一章談論了模式註解宣告元件(Bean)的應用,這裡記錄下Spring例項化的一些細節。


例項化

  • 通常我們通過@Component和@Autowired宣告、使用Bean
public class TestController {
    @Autowired
    private TestInter testInter;
}
public interface TestInter {
    void sayHello();
}
@Component
public class TestOne implements TestInter {
    public TestOne () {
        System.out.println("TestOne init");
    }

    @Override
    public void sayHello() {
        System.out.println("Hello TestOne");
    }
}
  • 可以看出,預設機制下,應用程式啟動時IOC容器就開始例項化物件。

忽略當前要注入的bean

  • 當我們注入一個並沒有例項化的物件。
//@Component
public class TestOne implements TestInter {
    public TestOne () {
        System.out.println("TestOne init");
    }
}
public class TestController {
    @Autowired
    private TestInter testInter;
}
  • 此時程式丟擲異常
  • @Autowired(required = false) 忽略當前要注入的bean
public class TestController {
    @Autowired(required = false)
    private TestInter testInter;
}
  • 可看出,程式正常啟動

@Lazy 延遲例項化

  • 通過@Lazy註解讓Bean延遲例項化
public class TestController {
    @Autowired
    @Lazy
    private TestInter testInter;

    @GetMapping(value = "/test")
    public void test(){
        testInter.sayHello();
    }
}
@Component
@Lazy
public class TestOne implements TestInter {
    public TestOne () {
        System.out.println("TestOne init");
    }

    @Override
    public void sayHello() {
        System.out.println("Hello TestOne");
    }
}
- End -
夢想是鹹魚
關注一下吧
以上為本篇文章的主要內容,希望大家多提意見,如果喜歡記得點個推薦哦 作者:夢想是鹹魚 出處:https://www.cnblogs.com/maggieq8324/ 本文版權歸作者和部落格園共有,歡迎轉載,轉載時保留原作者和文章地址即可。