@Configuration
public class RedisConfig {
	// @Configuration은 클래스 수준에서 Spring 설정을 나타냄
	// @Bean은 메서드 수준에서 그 메서드가 반환하는 객체를 빈으로 등록
	// 설정된 빈은 다른 컴포넌트에서 의존성 주입을 통해 사용

	// RedisTemplate 빈 생성
	@Bean
	public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory connectionFactory) {
		RedisTemplate<String, Object> template = new RedisTemplate<>();
		template.setConnectionFactory(connectionFactory);

		// 키는 String으로 설정
		template.setKeySerializer(new StringRedisSerializer());

		// 값은 RefreshToken 객체로 설정
		Jackson2JsonRedisSerializer<RefreshToken> serializer = new Jackson2JsonRedisSerializer<>(RefreshToken.class);
		template.setValueSerializer(serializer); // Redis의 값을 RefreshToken 객체로 직렬화

		// 해시 키와 값도 설정
		template.setHashKeySerializer(new StringRedisSerializer());
		template.setHashValueSerializer(serializer); // 해시의 값을 RefreshToken 객체로 직렬화
		return template;
	}

}

redis 에 저장된 리프레쉬토큰 검증 후 새로운 액세스 토큰 발급