我正在关注这篇文章,它解释了如何使用 Java High Level REST Client (JHLRC) 与 ElasticSearch 连接。
这个问题的重要部分在ElasticsearchConfig.java中:
@Configuration
public class ElasticsearchConfig {
...
@Bean(destroyMethod = "close")
public RestHighLevelClient restClient() {
final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
credentialsProvider.setCredentials(AuthScope.ANY,
new UsernamePasswordCredentials(userName, password));
RestClientBuilder builder = RestClient.builder(new HttpHost(host, port))
.setHttpClientConfigCallback(httpClientBuilder -> httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider));
RestHighLevelClient client = new RestHighLevelClient(builder);
return client;
}
}
@Service
public class ProfileService {
private RestHighLevelClient client;
private ObjectMapper objectMapper;
@Autowired
public ProfileService(RestHighLevelClient client, ObjectMapper objectMapper) {
this.client = client;
this.objectMapper = objectMapper;
}
...
我们正在自动装配RestHighLevelClient
,ObjectMapper
那么 Spring 是如何知道RestHighLevelClient
我们需要的实例来自哪里的ElasticsearchConfig.restClient()
呢?