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

猜你喜欢

转载自blog.csdn.net/suixinsuoyu12519/article/details/83757758