gpt4 book ai didi

java - EL1057E : No bean resolver registered in the context to resolve access to bean

转载 作者:行者123 更新时间:2023-12-01 17:59:48 29 4
gpt4 key购买 nike

我一直在尝试用多个索引编写有关 Elasticsearch 的文章。目前我已经安装了 Spring v5.2.3.RELEASE 和 Spring Boot v2.2.4.RELEASE。

我发现了几种允许使用 Spring 的 SPEL 技术使用多个索引的解决方案,但我无法使其工作。

我目前有这些文件:

ElasticDBDbConfig.java

package edu.unifi.disit.datamanager.config;
@Configuration
@EnableTransactionManagement
@EnableElasticsearchRepositories(basePackages = { "edu.unifi.disit.datamanager.datamodel.elasticdb"})
public class ElasticDBDbConfig {

@Value("${elasticsearch.protocol}")
private String esProtocol;

@Value("${elasticsearch.host}")
private String esHost;

@Value("${elasticsearch.port}")
private int esPort;

@Value("${elasticsearch.clustername}")
private String esClusterName;

@Bean(destroyMethod = "close")
public RestHighLevelClient elasticsearchClient() {
return new RestHighLevelClient(RestClient.builder(new HttpHost(esHost,esPort,esProtocol)));
}

@Bean
public ElasticsearchRestTemplate elasticsearchTemplate() {
ElasticsearchRestTemplate elasticsearchTemplate = new
ElasticsearchRestTemplate(elasticsearchClient());

elasticsearchTemplate.putMapping(KPIElasticValue.class);

return elasticsearchTemplate;
}

ConfigIndexBean.java

package edu.unifi.disit.datamanager.config;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;

@Configuration
@Component("configIndexBean")
public class ConfigIndexBean {

@Value("${elasticsearch.dummyIndex}")
private String indexName;

public String getIndexName() {
return indexName;
}

public void setIndexName(String indexName) {
this.indexName = indexName;
}

}

KPIElasticValue.java

package edu.unifi.disit.datamanager.datamodel.elasticdb;

@JsonInclude(JsonInclude.Include.NON_NULL)
@Entity
@JsonSerialize(using = KPIElasticValueSerializer.class)
@JsonDeserialize(using = KPIElasticValueDeserializer.class)
@ComponentScan(basePackages = "edu.unifi.disit.datamanager.config")
@Document(type = "_doc", indexName = "#{@configIndexBean.getIndexName()}")
public class KPIElasticValue {

你有什么想法吗?

我也试试

@Document(type = "_doc", indexName = "#{configIndexBean.getIndexName()}")
@Document(type = "_doc", indexName = "#{configIndexBean.indexName}")

异常(exception)情况是:

EL1057E:上下文中没有注册任何 Bean 解析器来解析对 Bean“configIndexBean”的访问

最佳答案

我是这样解决的:

ConfigIndexBean.java

package edu.unifi.disit.datamanager.config;

public class ConfigIndexBean {

private static String indexName = "dummy";

public static final String getIndexName() {
return indexName;
}

public static void setIndexName(String indexName) {
ConfigIndexBean.indexName = indexName;
}

}

以及 KPIElasticValue.java 上的注释:

@Document(type = "_doc",indexName = "# 
{T(edu.unifi.disit.datamanager.config.ConfigIndexBean).getIndexName()}")

在服务中,在调用存储库之前,我会像这样更改索引:

ConfigIndexBean.setIndexName("newindex");

关于java - EL1057E : No bean resolver registered in the context to resolve access to bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60657252/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com