Spring 数据REST存储库404不时
Spring Data REST repository 404 from time to time
我有 Spring 引导应用程序和 Spring 数据 REST。
我里面有以下 类:
用于身份验证的数据 JPA 存储库:
public interface UserRepository extends JpaRepository<User, Long> {
User findByUsername(String username);
}
API 用途的安全数据 REST 存储库:
@RepositoryRestResource
@Secured(Role.ROLE_USER_READ)
public interface UserDataRestRepository extends PagingAndSortingRepository<User, Long> {
@Override
@Secured(Role.ROLE_USER_WRITE)
<S extends User>S save(S entity);
@Override
@Secured(Role.ROLE_USER_DELETE)
void delete(Long id);
}
存储库 REST 配置器适配器:
@Configuration
public class RepositoryRestConfig extends RepositoryRestConfigurerAdapter {
@Override
public void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) {
config.setRepositoryDetectionStrategy(RepositoryDetectionStrategies.ANNOTATED);
config.setReturnBodyOnCreate(true);
config.setReturnBodyOnUpdate(true);
config.setReturnBodyForPutAndPost(true);
}
}
问题是当我启动我的应用程序时,API 的数据 REST 存储库有时不可用。我猜这是因为 Spring 使用第一个 JPA 存储库重写了用户类型的存储库 bean。
在 Actuator bean 端点中,即使 REST API 为 /users 页面显示 404,我也可以看到两个 bean。
同样,这种行为对我来说是不可预测的 - 有时有效,有时无效。
您知道如何告诉 Spring 使用数据 REST 的确切 bean 吗?
提前致谢。
经过一些调查,我发现发布了完全相同的问题 here。
另请参阅 this one。
最后,我将 2 个存储库合并为一个,它解决了我的问题。但这绝对不是我喜欢的方式。
我有 Spring 引导应用程序和 Spring 数据 REST。
我里面有以下 类:
用于身份验证的数据 JPA 存储库:
public interface UserRepository extends JpaRepository<User, Long> {
User findByUsername(String username);
}
API 用途的安全数据 REST 存储库:
@RepositoryRestResource
@Secured(Role.ROLE_USER_READ)
public interface UserDataRestRepository extends PagingAndSortingRepository<User, Long> {
@Override
@Secured(Role.ROLE_USER_WRITE)
<S extends User>S save(S entity);
@Override
@Secured(Role.ROLE_USER_DELETE)
void delete(Long id);
}
存储库 REST 配置器适配器:
@Configuration
public class RepositoryRestConfig extends RepositoryRestConfigurerAdapter {
@Override
public void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) {
config.setRepositoryDetectionStrategy(RepositoryDetectionStrategies.ANNOTATED);
config.setReturnBodyOnCreate(true);
config.setReturnBodyOnUpdate(true);
config.setReturnBodyForPutAndPost(true);
}
}
问题是当我启动我的应用程序时,API 的数据 REST 存储库有时不可用。我猜这是因为 Spring 使用第一个 JPA 存储库重写了用户类型的存储库 bean。
在 Actuator bean 端点中,即使 REST API 为 /users 页面显示 404,我也可以看到两个 bean。
同样,这种行为对我来说是不可预测的 - 有时有效,有时无效。
您知道如何告诉 Spring 使用数据 REST 的确切 bean 吗?
提前致谢。
经过一些调查,我发现发布了完全相同的问题 here。
另请参阅 this one。
最后,我将 2 个存储库合并为一个,它解决了我的问题。但这绝对不是我喜欢的方式。