Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring数据Rest存储库偶尔不导出_Java_Spring_Spring Boot_Spring Data_Spring Data Rest - Fatal编程技术网

Java Spring数据Rest存储库偶尔不导出

Java Spring数据Rest存储库偶尔不导出,java,spring,spring-boot,spring-data,spring-data-rest,Java,Spring,Spring Boot,Spring Data,Spring Data Rest,我的Spring引导应用程序(2.2.6.RELEASE)使用Spring数据Rest(3.2.6.RELEASE)时出现了一个奇怪的问题。有时我的存储库不会通过rest公开。这种情况发生在使用完全相同配置的应用程序的完全相同版本(相同jar)上 有4个@RepositoryRestResource,当它工作时,根资源会公开以下内容: { "_links": { "entity-a": { "href": "http://localhost:808

我的Spring引导应用程序(
2.2.6.RELEASE
)使用Spring数据Rest(
3.2.6.RELEASE
)时出现了一个奇怪的问题。有时我的存储库不会通过rest公开。这种情况发生在使用完全相同配置的应用程序的完全相同版本(相同jar)上

有4个
@RepositoryRestResource
,当它工作时,根资源会公开以下内容:

{
    "_links": {
        "entity-a": {
            "href": "http://localhost:8080/api/entity-a{?projection}",
            "templated": true
        },
        "entity-b": {
            "href": "http://localhost:8080/api/entity-b"
        },
        "entity-c": {
            "href": "http://localhost:8080/api/entity-c{?page,size,sort,projection}",
            "templated": true
        },
        "entity-d": {
            "href": "http://localhost:8080/api/entity-d"
        },
        "profile": {
            "href": "http://localhost:8080/api/profile"
        }
    }
}
当它不工作时,它会返回:

{
    "_links": {
        "profile": {
            "href": "http://localhost:8080/api/profile"
        }
    }
}
其他一些调查结果:

  • JPA组件扫描在这两种情况下都有效
  • 存储库本身在这两种情况下都正常工作,使用这些repo的自定义控制器工作正常
  • org.springframework.data
    启用调试日志记录会在两种情况下产生完全相同的输出
  • 比较执行器端点的响应没有显示出任何明显的差异
  • 存储库检测策略设置为
    RepositoryDetectionStrategies。显式注释
  • 我无法在SSCE中复制它
  • 模块已从Spring Boot 1.5.18升级,升级后问题开始出现

以前有没有其他人遇到过这个问题?这可能是什么原因造成的?或者一些关于如何进一步分析此问题的建议?

听起来像是您遇到了3.2.7及更新版本中已修复的问题。

似乎是RepositoryRestResource有问题,当您在
两种情况下都说
时,您的意思是重启后会中断吗?或者它也可能在运行时发生?一个好的选择是跟踪和调试针对任何发现的实体/服务创建映射的代码段,以交叉检查库是否不匹配there@AntJavaDev是的,这是一个启动/上下文加载问题,它在运行时从不更改。我尝试了尽可能多的跟踪/调试,但在我看来,这归结为
org.springframework.data.repository.core.support.RepositoryFactoryInformation
,在这两种情况下,这四个存储库都应该是这样。我也想到了库不匹配/冲突,但在我看来,这里只涉及与spring数据相关的依赖项,所有依赖项都是通过starter依赖项管理的,没有任何特定版本。嗯,非常尴尬,我们确定这不是任何短类型的代理缓存/响应缓存吗?我的意思是,如果你不重新启动整个应用程序,它不会暴露4个api调用,不管怎样?如果您正在添加另一个自定义的呢?新类是否放在不同的pkg/jar中?不,它在几个小时(甚至几天)内保持不变。repo在模块本身的同一个包中(为
@EntityScan
配置的基本包的子包)。很可能是一个暂时的依赖关系在起作用,您建议返回引导父1.5.18不会产生这个问题?感谢您指出这一点!这让我确信升级到SpringBoot2.2.7实际上解决了这个问题。