当前位置: 首页 > news >正文

Elasticsearch8.15 springboot配置类简单解释

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.mrgr.cn/news/7492.html

相关文章:

  • “深度学习之旅:TensorFlow 框架全解析与实战应用“
  • 基于单片机的智能仓库搬运小车
  • macOS M1Pro 安装 chntpw 工具
  • JavaScript获取系统时间字符串,并格式化
  • 软体水枪在灭火工作中发挥什么作用_鼎跃安全
  • polarctf靶场【四方密码题】【CRYPTO】不一样的四四方方、四个正方形
  • 02_React面向组件编程--基本使用与理解、组件实例的三大核心属性与事件处理
  • 嵌入式Qt移植前期准备-思维导图-学习笔记-基于正点原子阿尔法开发板
  • 24 交换机接口及地址配置
  • Linux下进程间的通信--管道
  • JMeter处理接口签名sign
  • SAP 接口 inbound (SAP CALL JAVA ) 负载均衡说明
  • js加载会阻塞dom吗?如何防止阻塞?
  • 【jvm】程序计数器是如何计数的
  • [Other]-安装ruby、ascli、ascp
  • GoFly快速开发后台框架当后端接口请求返回403提示码就跨域问题/请求端域名拦截问题
  • 数据赋能((185)——开发:提高数据价值密度——实施过程、应用特点
  • 软件设计师全套备考系列文章6 -- 线性表、栈和队列、串、数组、矩阵、广义表
  • 修复 502 Bad Gateway 错误的 6 种方法
  • 芯品快报:亚德诺(ADI)汽车音频总线A²B收发器AD2428