我正在为我的项目使用MVC设计模式,我有一个名为SchoolRepository的接口,并且有一个控制器类,在其中我声明了学校存储库接口,并且在调用模型类时也声明了学校存储库接口。我从控制器编写逻辑的模型类对象中,由于服务类中声明的学校接口为空,所以我得到了空指针异常
下面是我的控制器类
@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
public interface SchoolRepository extends JpaRepository<School, Long>{}
我在使用schoolRepository的Service类中得到一个空点异常,当我使用System.Out.Println检查s.schoolRepository的值时,我得到了空值..如何初始化接口以及如何在其中使用它服务等级
答案 0 :(得分:0)
使用“ new”在Controller类的getStudent()方法中实例化服务类时,spring容器不会出现。由于服务对象不是由spring容器创建的,因此“ schoolRepository”将不会自动连接到“ Service”类中,因此它将为null。 因此,将Service类标记为@Service,以使spring容器负责实例化。然后,而不是使用“ new”创建Service对象,而是在Controller类中自动装配Service对象。确保您的存储库类也被标记为@Repository。