Spring Boot не предоставляет правильные маршруты репозитория

#java #spring #spring-boot #rest #spring-repositories

Вопрос:

(Примечание: это учебник, на котором я основываю свою работу)

Я пытаюсь разработать простой API в Spring Boot, однако созданный мной репозиторий не отображается должным образом.

Модель выглядит так:

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

@Entity
public class Genre {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private long id;

    private String genreName;
    private String genreDesc;

    public String getGenreName() {
        return genreName;
    }

    public void setGenreName(String genreName) {
        this.genreName = genreName;
    }

    public String getGenreDesc() {
        return genreDesc;
    }

    public void setGenreDesc(String genreDesc) {
        this.genreDesc = genreDesc;
    }
}
 

Хранилище выглядит следующим образом:

 
import java.util.List;

import com.uts13244177.models.Genre;

import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.data.repository.query.Param;
import org.springframework.data.rest.core.annotation.RepositoryRestResource;

@RepositoryRestResource(collectionResourceRel = "genres", path = "genres")
public interface GenreRepository extends PagingAndSortingRepository<Genre, Long>{
    List<Genre> findByGenreName(@Param("genreName") String genreName);
}
 

И класс приложения не изменился с Spring Initializr:

 
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class BookDatabaseApplication {

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

}
 

Основываясь на приведенном выше руководстве, которое я использую, когда я запускаю cURL на http://localhost:8080, Я должен увидеть что-то вроде:

 {
  "_links" : {
    "genres" : {
      "href" : "http://localhost:8080/genres{?page,size,sort}",
      "templated" : true
    }
  }
}
 

Однако вместо этого я вижу:

 {
  "_links" : {
    "profile" : {
      "href" : "http://localhost:8080/profile"
    }
  }
}
 

Я запускаю OpenJDK 11, Spring Boot 2.5.0, с Maven 4.0.0.

Ответ №1:

проверьте, все ли классы моделей и классы контроллеров находятся в подпакете. означает [1]: https://i.stack.imgur.com/i4xnP.png

Комментарии:

1. Спасибо за это, оказывается, проблема заключалась в том, что я по ошибке поместил свою модель и репозиторий в один каталог слишком высоко, поэтому основной класс приложения не читал их.