SMALL
오류코드
package com.test.spring.spring_test.redis.config;
import lombok.RequiredArgsConstructor;
import org.springframework.boot.autoconfigure.data.redis.RedisProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.StringRedisSerializer;
@Configuration
@RequiredArgsConstructor
public class RedisConfig {
//application 에 있는 정보 가져오는것.
private final RedisProperties redisProperties;
@Bean
public RedisConnectionFactory redisConnectionFactory() {
return new LettuceConnectionFactory(
redisProperties.getHost(),
redisProperties.getPort()
);
}
@Bean
public RedisTemplate<String, Object> redisTemplate(){
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(redisConnectionFactory()); //redis 연결
redisTemplate.setKeySerializer(new StringRedisSerializer()); //Key는 String 으로 하는데 Serializer 는 직렬화.
redisTemplate.setValueSerializer(new StringRedisSerializer()); //value 도 동일.
return redisTemplate;
}
}
에러 메세지
Parameter 0 of constructor in com.test.spring.spring_test.redis.service.LowestPriceServiceImpl required a single bean, but 2 were found:
- redisTemplate: defined by method 'redisTemplate' in class path resource [com/test/spring/spring_test/redis/config/RedisConfig.class]
- stringRedisTemplate: defined by method 'stringRedisTemplate' in class path resource [org/springframework/boot/autoconfigure/data/redis/RedisAutoConfiguration.class]
에러 해결.
@Primary 어노테이션을 붙임.
* 가장 간단한 방법으로 여러 빈이 있을 때 기본적으로 선택될 빈에
* @Primary 어노테이션을 붙여주면 자동적으로 해당 빈이 선택된다.
* 주입 받을 때마다 모든 코드에 @Qualifier 어노테이션을 붙여줘야하는
* Qualifier 방법보다 간단하다.
* @Primary 어노테이션을 붙여주면 자동적으로 해당 빈이 선택된다.
* 주입 받을 때마다 모든 코드에 @Qualifier 어노테이션을 붙여줘야하는
* Qualifier 방법보다 간단하다.
해결 코드
@Bean
@Primary
public RedisTemplate<String, Object> redisTemplate(){
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(redisConnectionFactory()); //redis 연결
redisTemplate.setKeySerializer(new StringRedisSerializer()); //Key는 String 으로 하는데 Serializer 는 직렬화.
redisTemplate.setValueSerializer(new StringRedisSerializer()); //value 도 동일.
return redisTemplate;
}
반응형
LIST
'TIL' 카테고리의 다른 글
파일 경로 에러 (0) | 2023.06.10 |
---|---|
Spring Security AuthenticationProvider / BCryptPasswordEncoder match 에러 (2) | 2023.06.07 |
동기와 비동기 방식 / 스레드 풀 (0) | 2023.04.27 |
Java_Game 프로젝트 진행중 발생한 문제 공부 ( 멀티스레드 ) (1) | 2023.04.25 |
Java_Game Project / Multi Thread ( 멀티스레드 ) (0) | 2023.04.20 |