Elasticsearch8.15 springboot配置类简单解释

news/2024/9/23 22:39:06/

Elasticsearch8.15 springboot配置类简单解释

0、配置类代码

@Configuration
public class ElasticsearchConfig {// 从配置文件中读取 Elasticsearch 服务器的 URL@Value("${spring.elasticsearch.rest.uris}")private String serverUrl;// 从配置文件中读取用户名@Value("${spring.elasticsearch.rest.username}")private String username;// 从配置文件中读取密码@Value("${spring.elasticsearch.rest.password}")private String password;// 定义一个 Spring Bean,用于创建 ElasticsearchClient 实例@Beanpublic ElasticsearchClient esClient() throws IOException {// 创建基本身份验证,用于设置用户名和密码BasicCredentialsProvider credentialsProvider = new BasicCredentialsProvider();credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(username, password));// 创建 RestClient,用于与 Elasticsearch 进行低级别通信RestClient restClient = RestClient.builder(HttpHost.create(serverUrl)).setHttpClientConfigCallback(httpClientBuilder -> {// 将 BasicCredentialsProvider 配置到 HttpClient 中return httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);}).build();// 创建传输层,用于将 RestClient 与 Jackson JSON 解析器结合使用ElasticsearchTransport transport = new RestClientTransport(restClient, new JacksonJsonpMapper());// 返回 ElasticsearchClient 实例return new ElasticsearchClient(transport);}
}

在 Spring 框架中,@Bean 注解用于告诉 Spring 这个方法会返回一个对象,该对象将被注册为 Spring 容器中的一个 Bean。

1. 什么是 @Bean

@Bean 注解通常用在配置类(通常带有 @Configuration 注解的类)中的方法上,用于将该方法返回的对象注册到 Spring 容器中。这样,Spring 就会自动管理这个对象的生命周期,并可以在应用的其他地方通过依赖注入(@Autowired@Inject)来使用这个对象。

2. 方法作为一个 Bean?

是的,方法也可以作为一个 Bean。在 @Configuration 类中,带有 @Bean 注解的方法会告诉 Spring 框架,这个方法返回的实例将作为一个 Bean 注册到应用程序上下文中。每次调用这个方法时,Spring 会管理这个方法返回的对象。

3. 配置类解读

上面的 ElasticsearchConfig 类是一个配置类,它使用 @Bean 注解将 esClient() 方法定义为一个 Spring Bean。这样做的结果是,Spring 会将 esClient() 方法的返回值(即 ElasticsearchClient 实例)注册为一个 Bean。随后,这个 ElasticsearchClient 对象可以通过依赖注入来被其他类使用。

4. 作用

当 Spring Boot 启动时,它会扫描带有 @Configuration 注解的类,并调用带有 @Bean 注解的方法。返回的对象会被注册到 Spring 的上下文中,随后你可以通过 @Autowired 注解将这个 Bean 注入到其他组件中。

@Service
public class SomeService {@Autowiredprivate ElasticsearchClient elasticsearchClient;// 这里可以使用注入的 ElasticsearchClient 进行操作
}

这样,当你需要 ElasticsearchClient 实例时,Spring 会自动创建并注入该实例,而你不需要在代码中手动实例化和管理它。

5. 总结

@Bean 注解用于注册 Spring 管理的 Bean,方法可以作为一个 Bean,这种方式常用于需要复杂初始化逻辑的对象。例如,配置第三方库的客户端(如 ElasticsearchClient)并将其注册为 Spring Bean,确保可以在其他类中复用。


http://www.ppmy.cn/news/1512305.html

相关文章

http重要的状态码【精简版】

在 Web 开发中,HTTP 状态码用于表示服务器对客户端请求的响应。以下是一些常见且重要的 HTTP 状态码: 也可以参考: http状态码详解【详细版】 1xx: 信息响应 100 Continue:客户端应继续其请求。101 Switching Protocols:服务器…

Spring Boot整合Quartz框架

说明:Quartz是一个定时器框架,可以实现定时任务,本文介绍如何在Spring Boot项目中整合Quartz框架,Quartz介绍参看下面这篇文章: 【Quartz】Quartz定时任务框架 创建Demo 首先,创建一个Spring Boot项目&a…

open Euler22.03系统安装宝塔面板

环境:华为云open Euler22.03操作系统 配置:2核4G 1、安装宝塔面板。 登录弹性云服务器。 执行以下命令,下载并安装宝塔面板。 yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh &&…

Linux date命令

概述 date 命令用于显示或设置系统的时间与日期,语法格式为:“date [指定的格式]”。用户只需在强大的 date 命令后输入以“”号开头的参数,即可按照指定格式来输出系统的时间或日期。 [rootlocalroot ~]# uname -a #当前系统 Linux…

Qt五大核心特性之信号与槽

前言 Qt 引入信号与槽(Signal & Slot)机制的主要原因是为了提供一种灵活、松耦合的方式,使对象之间能够进行安全、方便的通信,尤其在事件驱动的编程环境中(如 GUI 应用)特别有效。 松耦合&#xff1a…

spring boot(学习笔记第十八课)

spring boot(学习笔记第十八课) Spring boot的定时任务和Quartz 学习内容&#xff1a; Spring boot的定时任务Spring boot的Quartz 1. Spring boot的定时任务 定义定时任务 加入必要的依赖 <dependency><groupId>org.springframework.boot</groupId&g…

去中心化的新时代:Web3技术的全球影响

随着技术的不断演进&#xff0c;Web3正引领互联网的去中心化新时代。相较于传统的Web1和Web2&#xff0c;Web3通过去中心化、区块链和智能合约等技术&#xff0c;正在重塑网络的运作方式。这一变革不仅提升了网络的安全性和透明度&#xff0c;也对全球经济、社会和文化产生了深…

Linux多进程

进程的概述 进程是计算机科学中的一个基本概念&#xff0c;它指的是在操作系统中正在执行的程序的实例 在Linux操作系统中&#xff0c;进程是程序执行的实体&#xff0c;是资源分配的基本单位 在在Ubuntu中&#xff0c;通过使用ps命令可以查看当前的进程列表 ps aux 进程与…