@Bean(destroyMethod = "close", name = "client")是什么意思
时间: 2023-07-06 11:19:13 浏览: 146
`@Bean` 是 Spring Framework 提供的注解,用于定义一个 Bean。其中的 `destroyMethod` 属性用于指定 Bean 销毁时调用的方法,`name` 属性用于指定 Bean 的名称。
在连接 Elasticsearch 时,我们通常会创建一个 `RestHighLevelClient` 对象,用于执行各种操作。当应用程序关闭时,我们需要关闭这个连接对象,以释放资源。为了实现这个目的,我们可以在 `@Bean` 注解中使用 `destroyMethod` 属性指定一个关闭连接的方法。
例如:
```java
@Bean(destroyMethod = "close", name = "client")
public RestHighLevelClient restHighLevelClient() {
return new RestHighLevelClient(
RestClient.builder(
new HttpHost("localhost", 9200, "http")));
}
```
上述代码中,我们创建了一个名为 `client` 的 `RestHighLevelClient` Bean,并使用 `destroyMethod` 属性指定了 `close` 方法作为销毁方法。当应用程序关闭时,Spring Framework 会自动调用 `close` 方法来关闭连接。
需要注意的是,`destroyMethod` 属性只在单例 Bean 中起作用,因为只有单例 Bean 才会在应用程序关闭时被销毁。如果使用的是原型 Bean,Spring Framework 不会调用销毁方法。
阅读全文