单例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 {}
是什么让您认为 DocumentA
或 Document
B` 是单例?这些是您存储和检索的实体。
您创建了一个 DocumentA
的实例,并使用 ElasticsearchOperations
的方法或使用存储函数存储它。当从 Spring Data Elasticsearch 检索数据时,您会得到新的实例,其中填充了从 Elasticsearch 读取的数据。
我正在 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 {}
是什么让您认为 DocumentA
或 Document
B` 是单例?这些是您存储和检索的实体。
您创建了一个 DocumentA
的实例,并使用 ElasticsearchOperations
的方法或使用存储函数存储它。当从 Spring Data Elasticsearch 检索数据时,您会得到新的实例,其中填充了从 Elasticsearch 读取的数据。