У вас есть два варианта:
- Использование
@PreDestroy
:
@PreDestroy
public StatefulRedisConnection<String, String> redisConnection() {
redisConnection.close();
redisClient.close();
}
С помощью
@Bean
методов
Убедитесь, что RedisClient
и StatefulRedisConnection
выставлены как бобы.Интерфейсы команд (RedisCommands
) не предоставляют метод close()
.
@Configuration
class RedisConfiguration {
@Value("${spring.redis.host}")
private String redisHostname;
@Value("${spring.redis.port}")
private int redisPort;
@Bean(destroyMethod = "close")
public StatefulRedisConnection<String, String> redisClient() {
RedisURI redisURI = RedisURI.create(redisHostname,redisPort);
return RedisClient.create(redisURI);
redisConnection = redisClient.connect();
}
@Bean(destroyMethod = "close")
public StatefulRedisConnection<String, String> redisConnection(RedisClient client) {
return client.connect();
}
@Bean
public RedisCommands redisCommands(StatefulRedisConnection<String, String> connection) {
return connection.sync();
}
}
Первый метод короче, тогда как подход @Bean
позволяет взаимодействовать с промежуточными объектами в приложении.