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

3次阅读

共计 967 个字符,预计需要花费 3 分钟才能阅读完成。

在 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(); // 后果:学校老师的姓名有王老师}

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

正文完
 0