일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Java
- query
- TensorFlow
- 차트
- 900gle
- Kafka
- license delete
- Python
- flask
- zip 파일 암호화
- licence delete curl
- MySQL
- docker
- Test
- License
- matplotlib
- Mac
- plugin
- aggregation
- sort
- zip 암호화
- 파이썬
- ELASTIC
- aggs
- Elasticsearch
- token filter test
- springboot
- API
- high level client
- analyzer test
- Today
- Total
개발잡부
Bean 객체 RedisConnectionFactory 의 NullPointerException 본문
RedisConnectionFactory 를 찾지 못해 에러가 발생했다면 아래와 같이 확인해보자
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
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.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;
@Configuration
public class RedisConfig {
@Bean
public RedisConnectionFactory redisConnectionFactory() {
return new LettuceConnectionFactory();
}
@Bean
public RedisTemplate<String, Object> redisTemplate() {
RedisTemplate<String, Object> template = new RedisTemplate<>();
template.setConnectionFactory(redisConnectionFactory());
template.setKeySerializer(new StringRedisSerializer());
template.setValueSerializer(new GenericJackson2JsonRedisSerializer());
return template;
}
}
Spring 애플리케이션에서 NullPointerException이 발생하는 이유는 RedisConnectionFactory를 생성하는 과정에서 필요한 컴포넌트나 빈이 올바르게 초기화되지 않았기 때문일 가능성이 큽니다. 문제를 진단하고 해결하기 위한 몇 가지 단계는 다음과 같습니다
1. 설정 확인
Redis 설정이 올바르게 정의되어 있는지 확인하세요. 일반적으로 Redis 연결 팩토리는 다음과 같이 보일 수 있습니다:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
@Configuration
public class RedisConfig {
@Bean
public RedisConnectionFactory redisConnectionFactory() {
return new LettuceConnectionFactory();
}
@Bean
public RedisTemplate<?, ?> redisTemplate() {
RedisTemplate<byte[], byte[]> template = new RedisTemplate<>();
template.setConnectionFactory(redisConnectionFactory());
return template;
}
}
@Configuration 어노테이션이 제대로 되어 있는지, 그리고 redisConnectionFactory 메서드가 정확하게 정의되어 있는지 확인하세요.
2. 애플리케이션 프로퍼티 확인
application.properties 또는 application.yml 파일에 Redis 설정이 올바르게 되어 있는지 확인하세요. 예를 들어
spring.redis.host=localhost
spring.redis.port=6379
3. 의존성 주입 확인
RedisConnectionFactory 빈이 생성될 때 필요한 모든 의존성이 올바르게 주입되고 초기화되어 있는지 확인하세요. NullPointerException은 누락되었거나 잘못 구성된 의존성 때문에 발생할 수 있습니다.
4. 스택 트레이스 확인
예외의 전체 스택 트레이스를 확인하여 NullPointerException이 정확히 어디에서 발생하는지 파악하세요. 이는 문제를 일으키는 구성이나 코드 부분에 대한 힌트를 줄 수 있습니다.
5. Redis 실행 여부 확인
Redis 서버가 실행 중이고 애플리케이션에서 접근 가능한지 확인하세요. Redis 서버가 다운되었거나 접근할 수 없는 경우 연결 팩토리가 실패할 수 있습니다.
6. 디버그 로깅 활성화
Spring 및 Redis에 대한 디버그 로깅을 활성화하여 초기화 과정에서 어떤 일이 발생하는지 자세히 확인하세요. application.properties에 다음을 추가하세요
logging.level.org.springframework=DEBUG
logging.level.org.springframework.data.redis=DEBUG
예제 설정
좀 더 자세한 설정 예제는 다음과 같습니다
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
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.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;
@Configuration
public class RedisConfig {
@Bean
public RedisConnectionFactory redisConnectionFactory() {
return new LettuceConnectionFactory();
}
@Bean
public RedisTemplate<String, Object> redisTemplate() {
RedisTemplate<String, Object> template = new RedisTemplate<>();
template.setConnectionFactory(redisConnectionFactory());
template.setKeySerializer(new StringRedisSerializer());
template.setValueSerializer(new GenericJackson2JsonRedisSerializer());
return template;
}
}
'JAVA > Troubleshooting' 카테고리의 다른 글
Cannot invoke "org.springframework.web.servlet.mvc.condition.PatternsRequestCondition.toString()" (0) | 2023.08.20 |
---|---|
class file major version 61 (0) | 2023.07.30 |
hibernate.properties not found (0) | 2023.04.12 |
Cannot change dependencies of configuration ':compile' after it has been resolved. (0) | 2023.02.19 |