Spring 无法访问本地主机上的 REST 控制器 (404)

Spring Cannot access REST Controller on localhost (404)

你好,我希望你在做 请我尝试解决整个周末任何人都可以提供帮助

应用程序运行正常,但我收到 404 响应 这是我向端点提交获取请求时的响应: { “时间戳”:“2022-05-17T08:29:49.747+00:00”, “状态”:404, “错误”:“未找到”, “路径”:“/auditoria/all” } 这是我的项目结构:

project structure

FcbApplication.java

package com.example.demo;
import com.example.*;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;

@SpringBootApplication
@ComponentScan("com")

public class FcbApplication {

    public static void main(String[] args) {
        SpringApplication.run(FcbApplication.class, args);
    }

}

Auditoria.java

package com.example.demo.model;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "auditoria")
public class Auditoria implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(nullable = false, updatable = false, name="id_auditoria")
    private Integer idAuditoria;
    private String nombre_tarea;
    private Date fecha_inicio;
    private Date fecha_fin;
    private String nombre_fichero;
    private String estado;

    public Auditoria() {
    }

    public Auditoria(Integer idAuditoria, String nombre_tarea, Date fecha_inicio, Date fecha_fin,
            String nombre_fichero, String estado) {
        this.idAuditoria = idAuditoria;
        this.nombre_tarea = nombre_tarea;
        this.fecha_inicio = fecha_inicio;
        this.fecha_fin = fecha_fin;
        this.nombre_fichero = nombre_fichero;
        this.estado = estado;
    }

    public Integer getId_auditoria() {
        return idAuditoria;
    }

    public void setId_auditoria(Integer id_auditoria) {
        this.idAuditoria = id_auditoria;
    }

    public String getNombre_tarea() {
        return nombre_tarea;
    }

    public void setNombre_tarea(String nombre_tarea) {
        this.nombre_tarea = nombre_tarea;
    }

    public Date getFecha_inicio() {
        return fecha_inicio;
    }

    public void setFecha_inicio(Date fecha_inicio) {
        this.fecha_inicio = fecha_inicio;
    }

    public Date getFecha_fin() {
        return fecha_fin;
    }

    public void setFecha_fin(Date fecha_fin) {
        this.fecha_fin = fecha_fin;
    }

    public String getNombre_fichero() {
        return nombre_fichero;
    }

    public void setNombre_fichero(String nombre_fichero) {
        this.nombre_fichero = nombre_fichero;
    }

    public String getEstado() {
        return estado;
    }

    public void setEstado(String estado) {
        this.estado = estado;
    }

    @Override
    public String toString() {
        return "Auditoria {id_auditoria=" + idAuditoria + ", nombre_tarea=" + nombre_tarea + ", fecha_inicio="
                + fecha_inicio + ", fecha_fin=" + fecha_fin + ", nombre_fichero=" + nombre_fichero + ", estado="
                + estado + "}";
    }

}

AuditoriaResource.java

import java.util.List;

import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import com.example.demo.model.Auditoria;
import com.example.demo.service.AuditoriaService;

@RestController
@RequestMapping(value = "/auditoria")
public class AuditoriaResource {
    private final AuditoriaService auditoriaService ;
    
    public AuditoriaResource(AuditoriaService auditoriaService) {
        this.auditoriaService= auditoriaService;
    }
    
    @GetMapping("/all")
    public ResponseEntity<List<Auditoria>> getAllAuditorias(){
        List<Auditoria> auditorias=auditoriaService.findAllAuditoria();
        return new ResponseEntity<>(auditorias,HttpStatus.OK);
    }

    @GetMapping("/find/{id}")
    public ResponseEntity<Auditoria> getAuditoriaById(@PathVariable("id") Integer id){
        Auditoria auditorias=auditoriaService.findAuditoriaById(id);
        return new ResponseEntity<>(auditorias,HttpStatus.OK);
    }
}

AuditoriaRepo.java

package com.example.demo.repo;

import org.springframework.data.jpa.repository.JpaRepository;

import com.example.demo.model.Auditoria;

public interface AuditoriaRepo extends JpaRepository<Auditoria,Integer>{

    void deleteAuditoriaByIdAuditoria(Integer idAuditoria);

    Auditoria findAuditoriaByIdAuditoria(Integer idAuditoria);

}

AuditoriaService.java

package com.example.demo.service;

import java.util.List;
import java.util.Random;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.example.demo.model.Auditoria;
import com.example.demo.repo.*;
@Service

public class AuditoriaService {
    private final AuditoriaRepo auditoriaRepo;

    @Autowired
    public AuditoriaService(AuditoriaRepo auditoriaRepo) {
        this.auditoriaRepo = auditoriaRepo;
    }

    public Auditoria addAuditoria(Auditoria auditoria) {
        Random r = new Random();
        int low = 0;
        int high = 1000;
        int result = r.nextInt(high - low) + low;

        auditoria.setId_auditoria(result);
        return auditoriaRepo.save(auditoria);
    }
    
    public List<Auditoria> findAllAuditoria(){
        return auditoriaRepo.findAll();
    }
    
    
    public Auditoria updateAuditoria(Auditoria auditoria) {
        return auditoriaRepo.save(auditoria);
    }
    
    public Auditoria findAuditoriaById(Integer id) {
        return auditoriaRepo.findAuditoriaByIdAuditoria(id);
        //exception minute 36
    }
    public void deleteAuditoria(Integer id) {
        auditoriaRepo.deleteAuditoriaByIdAuditoria(id);
    }
}

  1. 将控制器移到单独的包中(例如 com.example.demo.controller)
  2. 删除 @ComponentScan 注释,因为 Spring 默认会这样做。