Spring bean的建立時機
建立物件的時機
1、在預設的情況下,在spring容器啟動的時候建立物件
在spring配置檔案中,只要根據以上的三種方式的其中一種配置了,spring容器就會建立物件
好處:spring容器和web容器整合的時候,當web容器啟動的時候就可以初始化spring容器了,如果這個時候
spring容器內部有錯誤,則直接會報錯
如果該bean中存放著大量的資料,而且資料的初始化發生在建立物件的時候,這個時候,資料會過早的駐留在記憶體中
2、如果在spring的配置檔案中一個bean的配置中有lazy-init="true",那麼該bean在呼叫getBean方法時建立物件
不好處:不能過早的發現錯誤
好處:按照需求載入資料(什麼時候要什麼時候載入)
依賴注入的時機
@Component
public class Student {
private String name;
public Student() {
System.out.println("stu被例項化!!!");
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
public class Teacher {
@Resource
private Student student;
public Teacher() {
System.out.println("Teacher被例項化!!!!" + student);
student.setName("小明");
System.out.println("老師正在教學生" + student.getName());
}
}
會報NullPointer錯誤!!!
**在spring的文件裡面有說明,建構函式的呼叫要早於setter注入和欄位注入的,所以在呼叫建構函式的時候student還沒有賦值。
---------------------
作者:黑暗的笑
來源:CSDN
原文:https://blog.csdn.net/xia744510124/article/details/51273576
版權宣告:本文為博主原創文章,轉載請附上博文連結!