redisConfig 질문입니다
package org.example.config
import org.redisson.Redisson
import org.redisson.api.RedissonClient
import org.redisson.config.Config
import org.springframework.beans.factory.annotation.Value
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.RedisStandaloneConfiguration
import org.springframework.data.redis.connection.lettuce.LettuceClientConfiguration
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory
import org.springframework.data.redis.core.RedisTemplate
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer
import org.springframework.data.redis.serializer.StringRedisSerializer
import java.time.Duration
@Configuration
class RedisConfig {
@Bean
fun redisConnectionFactory(
@Value("\${database.redis.host}") host: String,
@Value("\${database.redis.port}") port: Int,
@Value("\${database.redis.password:${null}}") password: String?,
@Value("\${database.redis.database:${0}}") database: Int,
@Value("\${database.redis.timeout:${10000}}") timeout: Long,
) : LettuceConnectionFactory {
val config = RedisStandaloneConfiguration(host, port).apply {
password?.let { setPassword(it) }
setDatabase(database)
}
val clientConfig = LettuceClientConfiguration.builder()
.commandTimeout(Duration.ofSeconds(timeout))
.build()
return LettuceConnectionFactory(config,clientConfig)
}
@Bean
@Primary
fun redisTemplate(connectionFactory : RedisConnectionFactory): RedisTemplate<String, String> {
val template = RedisTemplate<String, String>()
template.connectionFactory = connectionFactory
template.keySerializer = StringRedisSerializer()
template.valueSerializer = Jackson2JsonRedisSerializer(String::class.java)
template.hashKeySerializer = StringRedisSerializer()
template.hashValueSerializer = Jackson2JsonRedisSerializer(String::class.java)
template.afterPropertiesSet()
return template
}
@Bean
fun redissonClient(
@Value("\${database.redisson.host}") host: String,
@Value("\${database.redisson.timeout}") timeout: Int,
@Value("\${database.redisson.password:${null}}") password: String?,
) : RedissonClient {
val config = Config()
val singleServerConfig = config.useSingleServer()
.setAddress(host)
.setTimeout(timeout)
if (!password.isNullOrBlank()) {
singleServerConfig.setPassword(password)
}
return Redisson.create(config).also {
println("redisson create success")
}
}
}An annotation argument must be a compile-time constant
와 같은 에러가 나는데 강의 파일 코드로도 같은 에러가 납니다
답변 1
0
woo님 안녕하세요 질문 남겨주셔서 감사합니다!
혹시 컴파일 하실 떄 사용하시는 java 버전 정보를 알 수 있을까요??
0
현재 build.gradle.kts의 정보는 다음과 같습니다
plugins {
id("org.springframework.boot") version "3.2.2"
id("io.spring.dependency-management") version "1.1.4"
kotlin("jvm") version "1.9.22"
kotlin("plugin.spring") version "1.9.22"
kotlin("plugin.jpa") version "1.9.22"
kotlin("plugin.serialization") version "1.8.0"
}
tasks.test {
useJUnitPlatform()
}
kotlin {
jvmToolchain(17)
}
3
공유해주셔서 감사합니다.
코드상의 오타가 있었네요 현재
redisConnectuonFactory 함수에서의 password에 문제가 있습니다.Kotlin에서 ${null}에 대해서 런타임에서는 표현식으로 인식하기 때문에 컴파일 에러가 발생을 하는것입니다.
그냥 간단하게 {database.redis.password:} 로 수정하신다면 문제가 해결되는것으로 보입니다!!
라이브 운영중인 환경의 테이블에 인덱스 추가시 고려사항
0
21
2
강의가 검은 화면으로 나옵니다.
0
42
1
질문] 에러처리 관련 문의
0
70
2
강의_34] 공통 모듈 관련 질문입니다.
0
82
2
강의 19] 질문입니다.
0
60
2
OkHttpClientConfig timeout 설정 질문
0
64
2
Kotlin data class 엔티티에서 copy로 수정 후 save하는 이유가 있을까요?
0
91
2
JDK 선택할 때 궁금점!!
0
107
3
혹시 어플리케이션을 실행할 수 있게 readme 같은건 따로 없나요?
0
81
1
access_token Db 저장건
0
82
2
data class 관련 질문입니다
0
79
2
TransactionMessage 질문
0
52
2
CompletableFuture 질문
0
85
3
스프링 빈 질문
1
86
2
SpringBoot + Kotlin에서 Redis 캐싱 사용 관련되서 여쭤봐도 될까요?
0
241
2
entity 객체 생성을 data class 로 하신 이유가 있을까요?
0
331
3
return@logFor을 사용한 이유가 궁금합니다.
0
138
1
@Transactional.kt에 대한 효용성 질문
0
124
1
@Transactional.kt에 대한 효용성 질문
0
194
1
class 가 아닌 파일로 생성하시는이유
0
188
2
카프카 컨슈머 구현 질문
0
154
2
DDL문 정리되어 있는 파일 있을까요?
0
212
2
와 이리 게시판이 조용하노
0
192
1
기기 관련 질문입니다!
0
218
2





