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