单例bean如何处理动态索引

how does singleton bean handle dynamic index

我正在 spring 数据弹性搜索。基于请求中的不同 header,我创建了 @RequestScope object IndexConfig 来保存不同的索引集。它似乎在工作。但是我不明白 singleton bean DocumentA/DocumentB 是如何处理动态索引的?我是否也需要设置它们@RequestScope?

@Component
@Data
@RequestScope
public class IndexConfig {

    private String AIndexName;
    private String BIndexName;
}

@Component
public class RequestFilter implements Filter {
    @Autowired
    private IndexConfig indexConfig ;
  
    public void doFilter(ServletRequest req,....) {
       
       if(httpRequest.getHeader("one"){
         indexConfig.setAIndexName("A1);
         indexConfig.setBIndexName("B1); 

      }else if(httpRequest.getHeader("two"){
         indexConfig.setAIndexName("A2);
         indexConfig.setBIndexName("B2); 
     }
    ..
    }
}  

@Document(indexName = "#{@indexConfig.getAIndexName()}", createIndex = false)
public class DocumentA {}

@Document(indexName = "#{@indexConfig.getBIndexName()}", createIndex = false)
public class DocumentB {}

是什么让您认为 DocumentADocumentB` 是单例?这些是您存储和检索的实体。

您创建了一个 DocumentA 的实例,并使用 ElasticsearchOperations 的方法或使用存储函数存储它。当从 Spring Data Elasticsearch 检索数据时,您会得到新的实例,其中填充了从 Elasticsearch 读取的数据。