Spring Boot 在使用 solrj 而不是 spring-boot-starter-data-solr 时会爆炸
Posted
技术标签:
【中文标题】Spring Boot 在使用 solrj 而不是 spring-boot-starter-data-solr 时会爆炸【英文标题】:Spring Boot blows up when using solrj but not spring-boot-starter-data-solr 【发布时间】:2015-06-13 18:22:23 【问题描述】:我正在尝试将现有的 Spring 应用程序移植到 Spring Boot。我不使用 spring-boot-starter-data-solr 启动器,但是我的类路径上有 apache solrj (5.0.0)。
在启动过程中,应用程序崩溃了。似乎 spring boot 看到了 solr 类,并假设我在类路径上也有 spring-boot-starter-data-solr。特别是我得到这个错误:
java.lang.IllegalArgumentException: @ConditionalOnMissingBean 注释必须至少指定一个 bean(类型、名称或注释)
如果我放弃 solrj 依赖并改用 spring-boot-starter-data-solr 就可以了。但是我不需要 spring-data-solr 集成,这样做会迫使我将我们的应用程序反向移植到 solr 的 4.7.x 版本。
有人知道解决方法吗?
【问题讨论】:
【参考方案1】:所以看来问题是由 spring boot 对 solrj 4.7.x 的依赖引起的,而我使用的是 5.0.0
我通过使用修复它
@SpringBootApplication(exclude = SolrAutoConfiguration.class)
告诉引导完全忽略 SolrAutoConfiguration。
【讨论】:
根本原因是 5.0 不是 4.7 的直接替代品,因为它包含一些破坏性的 API 更改。我想当 Spring Data Solr 迁移到 5.0 时,Spring Boot 将支持 Solr 5.0。与此同时,我打开了an issue 以改进诊断。以上是关于Spring Boot 在使用 solrj 而不是 spring-boot-starter-data-solr 时会爆炸的主要内容,如果未能解决你的问题,请参考以下文章
使用 Spring-Boot 创建一个简单的 JAR 而不是可执行的 JAR
在 Kubernetes 上使用 Prometheus 监控 Spring Boot 应用程序,而不是设置端点
测试容器在 Spring Boot 项目中启动两个容器而不是一个