在 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(); // 后果:学校老师的姓名有王老师}
集体能力无限,如有不对的中央,欢送小伙伴斧正,若对您有帮忙,能够点个赞,谢谢啦⭐