创建对象的时机
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
版权声明:本文为博主原创文章,转载请附上博文链接!