有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

类对象内部接口的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) 个答案

  1. # 1 楼答案

    当您使用“new”在控制器类中的getStudent()方法中实例化服务类时,spring容器并没有出现。由于服务对象不是由spring容器创建的,“schoolRepository”不会自动连接到“service”类中,因此它将为null。 因此,将服务类标记为@Service,使spring容器负责实例化。然后在控制器类中使用autowire服务对象,而不是使用“new”创建服务对象。确保你的存储库类也被标记为@repository