blob: 941e6b1feb332003abd0208e137c62733109ced1 [file] [log] [blame]
package com.supwisdom.dlpay
import com.fasterxml.jackson.databind.ser.std.StringSerializer
import io.lettuce.core.ReadFrom
import org.springframework.beans.factory.annotation.Value
import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.boot.runApplication
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.RedisPassword
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.repository.configuration.EnableRedisRepositories
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer
import org.springframework.data.redis.serializer.StringRedisSerializer
@Configuration
@EnableRedisRepositories
class AppConfig {
@Value("\${redis.server}")
lateinit var server: String
@Value("\${redis.port}")
var port: Int = 0
@Value("\${redis.database}")
var database: Int = 0
@Value("\${redis.password}")
lateinit var password: String
@Bean
fun redisConnectionFactory(): RedisConnectionFactory {
val clientConfig = LettuceClientConfiguration.builder()
.readFrom(ReadFrom.SLAVE_PREFERRED)
.build()
val serverConfig = RedisStandaloneConfiguration(server, port)
if (password.isNotEmpty()) {
serverConfig.password = RedisPassword.of(password)
}
serverConfig.database = database
return LettuceConnectionFactory(serverConfig, clientConfig)
}
}
@Configuration
class HttpSessionConfig {
@Bean
fun sessionRedisTemplate(
connectionFactory: RedisConnectionFactory): RedisTemplate<Any, Any> {
val template = RedisTemplate<Any, Any>()
template.keySerializer = StringRedisSerializer()
template.hashKeySerializer = StringRedisSerializer()
template.setDefaultSerializer(GenericJackson2JsonRedisSerializer())
template.setConnectionFactory(connectionFactory)
return template
}
@Bean
fun longValueRedisTemplate(connectionFactory: RedisConnectionFactory): RedisTemplate<String, Long> {
val template = RedisTemplate<String, Long>()
template.keySerializer = StringRedisSerializer()
return template
}
}
@SpringBootApplication
class PayApiApplication
fun main(args: Array<String>) {
runApplication<PayApiApplication>(*args)
}