반응형
임베디드 레디스를 이용해 테스트를 해보자
레디스를 로컬 환경에서 사용 할 때에 it.ozimov.redis
에서 제공하는 Redis Server를 통해 테스팅을 할 수 있다.
스프링부트 Dependency 설정
- spring-boot-starter-data-redis
- 레디스 클라이언트 연결을 위한 추가
- embedded-redis
- 임베디드 레디스 서버를 사용하기 위해 추가
scope
가test
로 되어있으니, 필요에 따라 제거해도 상관없다. 다만,test
로 되어있을 경우,src.main
환경에서는 사용할 수 없으니 주의.
- lombok
- 필수는 아니지만, 예제 작성 편의를 위해 사용
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>it.ozimov</groupId>
<artifactId>embedded-redis</artifactId>
<version>0.7.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<scope>provided</scope>
</dependency>
스프링 어플리케이션 설정
src.main.resources > application.yml
- 레디스 클라이언트를 위한 설정정보
src.test.resources > application.yml
- 레디스 서버가 바라볼 설정정보
spring:
redis:
host: localhost
port: 16379
임베디드 레디스 서버 실행 정의
- test/ 아래
config
파일 설정
package com.derveljun.blogredis.config.test;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
import redis.embedded.RedisServer;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import java.io.IOException;
@Slf4j
// @Profile({"local", "dev", "test"}) -> test 소스내에서는 불필요
@Configuration
public class TestRedisConfig {
private RedisServer redisServer;
public TestRedisConfig(@Value("${spring.redis.port}") int redisPort) {
redisServer = new RedisServer(redisPort);
}
@PostConstruct
public void startRedis() throws IOException {
redisServer.start();
}
@PreDestroy
public void stopRedis() {
redisServer.stop();
}
}
레디스 클라이언트 빈 등록
package com.derveljun.blogredis.config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.data.redis.RedisProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.repository.configuration.EnableRedisRepositories;
@Configuration
@EnableRedisRepositories
public class RedisConfiguration {
private String redisHost;
private int redisPort;
public RedisConfiguration(@Value("${spring.redis.host}") String redisHost,
@Value("${spring.redis.port}") int redisPort) {
this.redisHost = redisHost;
this.redisPort = redisPort;
}
@Bean
public LettuceConnectionFactory redisConnectionFactory (RedisProperties redisProperties){
return new LettuceConnectionFactory(redisHost, redisPort);
}
@Bean
public RedisTemplate<?, ?> redisTemplate(LettuceConnectionFactory connectionFactory) {
RedisTemplate<byte[], byte[]> template = new RedisTemplate<>();
template.setConnectionFactory(connectionFactory);
return template;
}
}
예제를 위한 도메인 생성
- User.java
package com.derveljun.blogredis.domain;
import lombok.*;
import org.springframework.data.annotation.Id;
import org.springframework.data.redis.core.RedisHash;
import java.util.UUID;
@RedisHash("user")
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Data
public class User {
@Id
private UUID id;
private String name;
}
- UserRepository.java
package com.derveljun.blogredis.domain;
import org.springframework.data.repository.CrudRepository;
import java.util.UUID;
public interface UserRepository extends CrudRepository<User, UUID> {
}
예제 Github 위치
반응형
'Java & Spring > Spring' 카테고리의 다른 글
스프링 배치 Spring Batch [1] 기본 개념 (0) | 2020.01.22 |
---|---|
Springboot + Web 에서 /resources/static 정적 리소스 URL 접근 방법 (0) | 2020.01.12 |
[빠르게 보는] 스프링5 / 스프링부트 파일 업로드 (2) | 2019.07.02 |
자바 메일 보내기 예제 ( 구글 ) (0) | 2017.10.24 |
XSS 대응 방법 (0) | 2017.06.19 |
WRITTEN BY
,