spring - SDR - 只读存储库与 CrudRepository
问题描述
我注意到 ReadOnly 存储库的相当特殊的行为,并想知道是否有其他人看到类似的问题。
我已经创建了 SDR 文档中提到的只读存储库接口。如您所见,类的主体只是内置 CrudRepository 的复制粘贴,仅保留了 GET 方法。
MyReadOnlyRespository.java
@NoRepositoryBean
public interface MyReadOnlyRespository<T, ID extends Serializable> extends Repository<T, ID>{
Optional<T> findById(ID id);
boolean existsById(ID id);
Iterable<T> findAll();
Iterable<T> findAllById(Iterable<ID> ids);
long count();
}
这是扩展自定义只读存储库的 UserRepostiory。
用户存储库.java
@RepositoryRestResource(path="users", collectionResourceRel="users")
public interface UserRepository extends MyReadOnlyRespository<User, Integer> {
}
使用此配置,当我访问http://localhost:8080/services/users时,可以看到以下响应,这是预期的。
{
"_embedded": {
"users": [
{
....
"_links": {
"self": {
"href": "http://localhost:8080/services/users/1"
},
"user": {
"href": "http://localhost:8080/services/users/1"
}
}
}
]
},
"_links": {
"self": {
"href": "http://localhost:8080/services/users"
},
"profile": {
"href": "http://localhost:8080/services/profile/users"
}
}
}
但是当我尝试使用 URL 访问特定用户时,我得到方法不支持的错误。http://localhost:8080/services/users/1。
但是,如果我从内置的 CrudRepository 而不是自定义的 MyReadOnlyRepository 扩展我的 UserRepository,则特定用户的上述 URL 会给出预期的响应。那么给了什么?为什么自定义存储库失败?
解决方案
推荐阅读
- flutter - 有什么方法可以将提供程序依赖注入到 Flutter 中的普通类?
- c# - Unity中的硬币系统
- angular - 如何使用 Angular 2 构建 Maven 战争文件
- c - 指向整个数组的指针
- javascript - 将当前文件中的所有函数导出为一个变量
- visual-studio - 如何在 VS 项目中禁用 clang-cl 特定警告
- linux-kernel - 为什么我的内核会立即重置我的机器?
- python - 在 python 中使用两个数据帧执行算术运算?
- jquery - 如何在 desc 中使用一列的多列排序?
- java - 没有 GeoJSON 文件的 Mapbox 聚类