类对象内部接口的java@Autowired为空
我在我的项目中使用MVC设计模式,我有一个名为SchoolRepository的接口,我有一个控制器类,我在其中声明了school repository接口,我在model类中声明了school repository接口,当我调用模型类对象时,我从控制器中写入了逻辑,我得到了null指针异常,因为服务类中声明的学校接口为null
下面是我的控制器类
@RestController
@RequestMapping("University")
public class Controller{
//interface declaration
@Autowired
SchoolRepository schoolRepository;
@GetMapping("student")
public list getStudent(){
Service s=new Service();
List list=s.getStudents();
return list;
}
.
.
}
下面是我的模型课
public class Service(){
@Autowired
SchoolRepository schoolRepository;
public List getStudents(){
return schoolRepository.getAll();
}
下面是repository类
@Repository
public interface SchoolRepository extends JpaRepository<School, Long>{}
当我使用System检查s.schoolRepository的值时,我在使用schoolRepository的服务类中得到一个空点异常。出来Println我得到空值。。如何初始化接口以及如何在服务类中使用它
# 1 楼答案
当您使用“new”在控制器类中的getStudent()方法中实例化服务类时,spring容器并没有出现。由于服务对象不是由spring容器创建的,“schoolRepository”不会自动连接到“service”类中,因此它将为null。 因此,将服务类标记为@Service,使spring容器负责实例化。然后在控制器类中使用autowire服务对象,而不是使用“new”创建服务对象。确保你的存储库类也被标记为@repository