关于spring:手动创建对象在-Spring-容器中报空指针异常

在 Spring 框架中手动创立的对象外面应用 @Autowired 主动注入时,会发现报空指针异样,起因就是手动创建对象,Spring 将不会帮咱们进行治理,如果咱们要在本人创立的对象外面应用主动注入的话能够通过结构器传参的办法赋值

上面举个栗子🌰

public class School{

    @Autowired
    Teacher teacher;
    
    //通过 id 查找老师相干信息并存到相应的实体类中
    TeacherInfo info =  teacher.findById("123");
    
    //定义方法打印老师姓名
    public void printName(){
    String name  = info.getName();    //设 name = "王老师"
    System.out.println("学校老师的姓名有"+name)
    }
}

而后咱们在主类中调用 printName 办法

public class Demo{
    //留神咱们这里手动 new 了 School类
    School school = new SChool;
    school.printName(); //空指针异样
}

防止的办法就是通过School类的结构器将 Teacher 类传入进去

public class School{
    //与下面不同的是,这里定义一个 teacher 用于承受传进来的对象
    Teacher teacher; 
    
    //创立结构器   
    public school(Teacher teacher) {
    this.teacher = teacher;
    }
    
    //通过 id 查找老师相干信息并存到相应的实体类中
    TeacherInfo info =  teacher.findById("123");
    
    //定义方法打印老师姓名
    public void printName(){
    String name  = info.getName();    //设 name = "王老师"
    System.out.println("学校老师的姓名有"+name)
    }
}

之后在主类中进行 Teacher 对象的创立和赋值

public class Demo{
    @Autowired
    Teacher teacher;
    
    //将咱们主动注入的对象进行结构器值传入
    School school = new SChool(teacher);
    school.printName(); //后果:学校老师的姓名有王老师
}

集体能力无限,如有不对的中央,欢送小伙伴斧正,若对您有帮忙,能够点个赞,谢谢啦⭐

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理