Spring Data REST存储库404不时

时间:2017-05-18 09:43:07

标签: java spring spring-boot spring-data-jpa spring-data-rest

我有Spring Data REST的Spring Boot应用程序。

我有以下课程:

用于身份验证的数据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的Data REST存储库不时不可用。我想这是因为Spring用第一个JPA存储库重写了用户类型的存储库bean。

在Actuator beans端点中,即使REST API为/ users页面显示404,我也可以看到这两个bean。

同样,这种行为对我来说是不可预测的 - 有时它起作用,有时却不起作用。

您是否知道如何告诉Spring将确切的bean用于Data REST?

提前致谢。

1 个答案:

答案 0 :(得分:3)

经过一番调查后,我发现here发布了完全相同的问题。

另请参阅this one

最后,我将2个存储库合并为一个,它解决了我的问题。但这绝对不是我喜欢的方式。