Elasticsearch8.15 springboot配置类简单解释

ops/2024/10/18 14:18:07/

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/ops/99143.html

相关文章

双系统安装:一键解锁电脑新境界,Windows与Linux并肩作战!

目录 🌟 告别单一选择,拥抱无限可能! 🌟 🌈 双系统安装:解锁双重身份的秘密武器 🔧 轻松上手,三步搞定双系统安装 🌟 告别单一选择,拥抱无限可能&#xff0…

MCU的ISR与IRQ

ISR(Interrupt Service Routine):中断服务程序 定义:ISR是计算机系统中用于处理硬件中断的一种特定程序。中断是硬件或软件引起的事件,会暂时打断当前正在运行的任务,以便紧急处理某个事件。ISR的目…

uniapp重新编译在微信开发者工具跳转指定页面

uniapp重新编译在微信开发者工具跳转指定页面 步骤 选择编译模式添加编译模式设置启动页面

PHP农场扶农系统智慧认养智慧乡村系统农场系统小程序源码

🌱科技赋能田园梦 —— 探索“农场扶农系统”与“智慧认养智慧乡村”新篇章🚀 🌈【开篇:田园新风尚,科技引领未来】 在快节奏的都市生活中,你是否曾梦想过拥有一片属于自己的绿色天地?现在&am…

数学建模笔记(四):熵权

背景&基本思想介绍 在实际的评价类问题中,在前面所说的层次分析法以及Topsis法中,指标权重的确定往往是通过主观的评价得来的,如果在没有专家的情况下,我们自己的权重分配往往可能带有一定的主观性,有没有一种可以…

blender--二维平面图标变为三维网格

有时候我们希望把一些二维图片能变成三维网格,本案例我们就针对这一场景进行实现。 首先我们可以先去找一张需要的图片(注意,本例需要图片是svg格式),我们可以在阿里巴巴矢量图标库等平台进行搜索,如图所示,找到需要的…

会话技术:Cookie、Session、JWT的优缺点分析与实践

登录认证 会话技术方案一:Cookie方案二:Session方案三:令牌技术JWT令牌介绍生成和校验登录下发令牌案例 会话技术 会话:用户打开浏览器,访问web服务器的资源,会话建立,直到有一方断开连接&…

【数据结构4】树的实例-模拟文件系统、二叉树的遍历(先序遍历、中序遍历、后序遍历、层次遍历)

1 树和二叉树 2 树的实例-模拟文件系统 3 二叉树 3.1 二叉树的遍历 二叉树的先序遍历 二叉树的中序遍历 二叉树的后序遍历 二叉树的层次遍历 1 树 树是一种数据结构 比如:目录结构 树是一种可以递归定义的数据结构树是由n个节点组成的集合:如果n0,那这是一棵空树;如…