当前位置: 首页 > 知识库问答 >
问题:

启用架构创建支持在Spring启动器-starter-data-solr 中提供支持

段干跃
2023-03-14

我使用spring-boot-starter-data-solr,并希望利用Spring Data Solr的schmea cration支持,如文档中所述:

每当刷新应用程序上下文时,自动架构填充都会检查您的域类型,并根据属性配置将新字段填充到索引中。这要求 solr 在无架构模式下运行。

但是,我无法实现这一目标。据我所知,Spring启动器不会在@EnableSolrRepositories注释上启用架构创建支持标志。所以我尝试的是以下内容:

@SpringBootApplication
@EnableSolrRepositories(schemaCreationSupport = true)
public class MyApplication {
  @Bean
  public SolrOperations solrTemplate(SolrClient solr) {
    return new SolrTemplate(solr);
  }
}

但是在Wireshark中,在通过存储库保存新实体时,我看不到对Solr模式API的任何调用。

这是有意工作,还是我错过了什么?我用的是Solr 6.2.0和Spring Boot 1.4.1。

共有1个答案

史昊焱
2023-03-14

我也遇到了同样的问题。经过一些调试,我找到了模式创建(或更新)根本没有发生的根本原因:

通过使用< code > @ EnableSolrRepositories 注释,Spring扩展会将一个factory-bean添加到创建存储库中使用的< code>SolrTemplate的上下文中。此模板初始化一个< code > solrpersistentityschemacreator ,它应该会进行创建/更新。

public void afterPropertiesSet() {

  if (this.mappingContext == null) {
    this.mappingContext = new SimpleSolrMappingContext(
      new SolrPersistentEntitySchemaCreator(this.solrClientFactory)
       .enable(this.schemaCreationFeatures));
  }

  // ...
}

问题是标志SchemaCreationFeature(启用创建者)是在工厂调用postProperty tiesSet()后设置的,因此创建者不可能完成它的工作。

我将在sping-data-solr问题跟踪器中创建一个问题。现在没有看到任何解决方法,其他方法要么是对sping-data进行自定义分叉/构建,要么是扩展一堆sping-class,并尝试在使用之前设置标志(但对此可能会有疑问)。

 类似资料:
  • 我决定回到我的想法,将Kafka指标与Spring Boot Actuator集成,我在这里已经提到: https://github.com/spring-projects/spring-boot/issues/6227 到目前为止,我有一个单独的“沙盒”项目和工作代码,我想将其合并到Spring Boot中。现在我有点困惑了。我的部分测试需要powermock来模拟Kafka的“超级安全”类:

  • 当Spring启动加载时,我需要在Postgres中创建一个新模式。因此,它应该检查模式是否不存在,然后创建一个新模式。我正在使用application.properties进行数据库配置。 Postgres使用的默认模式是公共的,我需要更改使我自己的模式,我将在env中定义。

  • 我在WSO2 IS中找到了关于IDP初始化SSO的文档。但尚未找到任何关于服务提供商发起的SSO的信息。 考虑这样一种场景,即使用一个本地IS作为服务提供商,该服务提供商连接到多个外部托管的SAML IDP以进行出站身份验证。 我是否能够通过静态链接触发SP启动的登录到一个特定的外部IDP?理想情况下,使用中继状态属性,该属性在成功的SAML登录过程后进行评估。 我正在使用WSO2 IS 5.0.

  • 我试图在Spring Boot应用程序中启用CORS支持,但没有成功。我研究了很多解决方案,但似乎都不适合我。 当我尝试从Angular应用程序呼叫Java后端时,我在chrome中看到了错误: CORS策略阻止从源http://localhost:4200在http://localhost:8080/..处访问XMLHttpRequest:对预检请求的响应不通过权限改造检查:不允许对预检请求进行

  • 问题 如何用内置的cheerypy提供SSL支持? 解法 import web from web.wsgiserver import CherryPyWSGIServer CherryPyWSGIServer.ssl_certificate = "path/to/ssl_certificate" CherryPyWSGIServer.ssl_private_key = "path/to/ssl

  • 问题内容: 我正在尝试使用内存数据库来模拟Teradata数据库。在构建表之前,我需要创建一个架构,但是,这很适合我。 我正在使用Spring,并且与进行了大量数据库交互,但是,这在Hibernate创建所有表之后执行。我试图使用HSQLDB应该读取的文件,但是我认为当您使用内存数据库无法正常工作时。我将文件移动了一点,似乎什么也没打。 任何人都知道如何在启动时为内存中的HSQLDB数据库创建架构