beaniejoy / dongne-cafe-api

☕️ kotlin & spring boot application (toy project) / siren order service for local cafe
2 stars 1 forks source link

Redis 적용해보기 #76

Closed beaniejoy closed 11 months ago

beaniejoy commented 11 months ago


필기 내용

spring data repository 이슈

gradle 의존성에 jpa, redis 추가한 경우 각각 spring data repository를 자동으로 설정하게 된다.
그래서 각각에 대해서 repository를 특정 package로 바라보게끔 설정했다.

@Configuration
@EnableRedisRepositories(basePackages = ["io.beaniejoy.dongnecafe.infra.redis.repository"])
class RedisConfig

@Configuration
@EnableJpaAuditing
class JpaConfig

이 때 에러는 아니지만 애플리케이션 실행시 이상한 로그가 나오게 된다.

Spring Data Redis - Could not safely identify store assignment for repository candidate interface io.beaniejoy.dongnecafe.db.cafe.repository.CafeMenuCategoryRepository. If you want this repository to be a Redis repository, consider annotating your entities with one of these annotations: org.springframework.data.redis.core.RedisHash (preferred), or consider extending one of the following types with your repository: org.springframework.data.keyvalue.repository.KeyValueRepository.

즉 Redis에 대해서 repository 지정하려고 했는데 이게 어떤 repository인지 구별이 어렵다 대충 이런 뜻
(왜냐하면 jpa repository도 있기 때문에)

그래서 이부분에 대해서 yaml에 다음과 같이 설정하라는 얘기도 있다.

spring:
  data:
    redis:
      repositories:
        enabled: false

하지만 위의 로그는 내가 지정한 redis 전용 repository에 아무런 repository interface가 없고
거기에 @RedisHash로 지정한 Entity가 없어서 나온 것이다.

그래서 redis repository를 사용할 Entity에 RedisHash 어노테이션 지정하고 그에 대한 repository 설정하면 저런 로그는 안 나올 것이다.

Multiple Spring Data modules found, entering strict repository configuration mode!
INFO 28216 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode.
INFO 28216 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 184 ms. Found 6 JPA repository interfaces.
INFO 28216 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode!
INFO 28216 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data Redis repositories in DEFAULT mode.
INFO 28216 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 8 ms. Found 1 Redis repository interfaces.

최종적으로 나오는 로그, JPA 전용 repository 6개 스캔했고, redis 전용 repository 1개 스캔완료했다는 의미

RedisHash

@RedisHash("auth_tokens")
class AuthToken protected constructor(
    id: Long,
    accessToken: String,
    refreshToken: String
) : BaseTimeEntity() {

    @Id
    var id: Long = id
        protected set
  //...
}