![](/img/trans.png)
[英]Spring Boot 3.0/Security 6.0 Migration - "EL1057E: No bean resolver registered in the context to resolve access to bean..." in SecurityFilterChain
[英]EL1057E: No bean resolver registered in the context to resolve access to bean
我一直在嘗試使用多個索引在 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;
}
配置索引Bean.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}")
例外是:
EL1057E: 在上下文中沒有注冊 bean 解析器來解析對 bean“configIndexBean”的訪問
我是這樣解決的:
配置索引Bean.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");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.