Spring 引导未公开正确的存储库路由
Spring Boot isn't exposing proper repository routes
(注:this 是我工作的基础教程)
我正在尝试在 Spring 引导中开发一个简单的 API,但是,我创建的存储库未正确公开。
模型看起来像这样:
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);
}
并且应用程序 class 与 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);
}
}
根据我正在使用的上述链接教程,当我在 http://localhost:8080 上 运行 cURL 时,我应该会看到类似以下内容的内容:
{
"_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]: https://i.stack.imgur.com/i4xnP.png
(注:this 是我工作的基础教程)
我正在尝试在 Spring 引导中开发一个简单的 API,但是,我创建的存储库未正确公开。
模型看起来像这样:
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);
}
并且应用程序 class 与 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);
}
}
根据我正在使用的上述链接教程,当我在 http://localhost:8080 上 运行 cURL 时,我应该会看到类似以下内容的内容:
{
"_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]: https://i.stack.imgur.com/i4xnP.png