【问题标题】:Spring-MVC CRUD project Static method errorSpring-MVC CRUD项目静态方法错误
【发布时间】:2020-09-21 23:46:58
【问题描述】:

我正在编写 MVC CRUD 教程。我创建了一个控制器服务和主要方法。但是我的IDE称为非静态方法不能被位于StudentController类addStudent和getStudent方法中的静态方法错误引用。任何人都可以帮助我。也很乐意接受结构性建议。感谢您的帮助。

学生控制器:

package com.example.demo;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;

import java.util.List;


@RestController

public class StudentController {
    StudentService studentService = new StudentService();

    @RequestMapping(value = "/students ", method = RequestMethod.GET, headers = "Accept=application/json")
    public List<Student> getStudent() {
        List<Student> studentList = studentService.getAllStudents();
        return studentList;
    }

    @RequestMapping(value = "/students ", method = RequestMethod.GET, headers = "Accept=application/json")
    public Student getStudentById(@PathVariable int id) {
        return StudentService.getStudent(id);
    }

    @RequestMapping(value = "/students ", method = RequestMethod.GET, headers = "Accept=application/json")
    public Student addStudent(@RequestBody Student student) {
        return StudentService.addStudent(student);
    }

    @RequestMapping(value = "/students", method = RequestMethod.PUT, headers = "Accept=application/json")
    public Student updateStudent(@RequestBody Student student) {
        return studentService.updateStudent(student);
    }

    @RequestMapping(value = "/student/{id}", method = RequestMethod.DELETE, headers = "Accept=application/json")
    public void deleteStudent(@PathVariable("id") int id) {
        studentService.deleteStudent(id);
    }


}



}

我的 StudentService 类:

package com.example.demo;

import javax.persistence.Id;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;


public class StudentService {

    private static HashMap<Integer, Student> studentHashMap = getStudentHashMap();


    public StudentService() {
        super();
        if (studentHashMap == null) {

            studentHashMap = new HashMap<Integer, Student>();

            Student student1 = new Student(1, "Erdem", "Akıncı", "Yazılım geliştirici");
            Student student2 = new Student(2, "Atıf", "İmal", "Beden İşçisi");
            Student student3 = new Student(3, "Salih", "Özdemir", "Kasiyer");
            Student student4 = new Student(4, "Mustafa", "Şensoy", "Yazılım geliştirici");

            studentHashMap.put(1, student1);
            studentHashMap.put(2, student2);
            studentHashMap.put(3, student3);
            studentHashMap.put(4, student4);


        }

    }

    public static int getMaximumId() {
        int max = 0;
        for (int id : studentHashMap.keySet()) {
            if (max <= id) {
                max = id;
            }
        }
        return max;
    }

    public HashMap<Integer, Student> getStudentHashMap() {
        return studentHashMap;
    }

    public List<Student> getAllStudents() {
        List<Student> students = new ArrayList<Student>(studentHashMap.values());
        return students;
    }

    public Student getStudent(int id) {
        Student student = studentHashMap.get(id);
        return student;
    }

    public Student addStudent(Student student) {
        student.setId(getMaximumId() + 1);
        getStudentHashMap().put(student.getId(), student);
        return student;
    }

    public Student updateStudent(Student student) {
        if (student.getId() <= 0)
            return null;
        studentHashMap.put(student.getId(), student);
        return student;
    }

    public void deleteStudent(int id) {
        studentHashMap.remove(id);
    }

}

【问题讨论】:

    标签: java spring-mvc crud


    【解决方案1】:

    正如 IDE 已经告诉您的,您不能从非静态上下文访问静态方法。您这样做是因为您的服务类中有一个静态方法,您可以在其中一个实例方法中使用该方法。从方法getMaximumId 中删除静态关键字,这不是必需的。

    否则我会推荐一个初学者教程,您可以在其中了解有关 Spring Annotation(服务、控制器、存储库)和依赖注入概念的更多信息。

    类似这样的:https://spring.io/guides/tutorials/rest/

    【讨论】:

      猜你喜欢
      • 2016-05-13
      • 1970-01-01
      • 2017-04-07
      • 2019-01-19
      • 2020-03-31
      • 2019-09-25
      • 2015-09-12
      • 2015-12-09
      • 1970-01-01
      相关资源
      最近更新 更多