本文所用springboot版本2.1.2.RELEASE
kotlin版本1.3.11
项目沿用系列1的项目
一. redis集成
新增依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
新增配置项
spring:
redis:
host: 127.0.0.1
port: 6379
timeout: 1000ms
配置redisTemplate
@Configuration
class RedisConfig{
/**
* 将redisTemplate格式化为string,any格式
*
* @param factory redis连接工厂
* @return redisTemplate
*/
@Bean
fun redisTemplate(factory: RedisConnectionFactory):RedisTemplate<String,Any> {
val template = RedisTemplate<String,Any>()
template.setConnectionFactory(factory)
val jackson2JsonRedisSerializer = Jackson2JsonRedisSerializer(Any::class.java)
val om = ObjectMapper()
om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY)
om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL)
jackson2JsonRedisSerializer.setObjectMapper(om)
val stringRedisSerializer = StringRedisSerializer()
template.keySerializer = stringRedisSerializer
template.hashKeySerializer = stringRedisSerializer
template.valueSerializer = jackson2JsonRedisSerializer
template.hashValueSerializer = jackson2JsonRedisSerializer
template.afterPropertiesSet()
return template
}
}
新建测试类,继承生成的测试类,并运行
class RedisTest : KotlinSpringbootApplicationTests() {
private val log = LoggerFactory.getLogger(this.javaClass)
private val testKey = this.javaClass.name
@Autowired
lateinit var redisTemplate: RedisTemplate<String, Any>
@Test
fun testString() {
log.info("---设置值---")
redisTemplate.opsForValue().set(testKey, "hello")
val str = redisTemplate.opsForValue().get(testKey) as? String
log.info("---打印值:$str---")
redisTemplate.delete(testKey)
}
}
尝试进行对象存储
data class User(val username:String, val sex:String,val phone:Long)
//新增测试类
@Test
fun testAny() {
val user = User("maple","man",18011111111)
log.info("---设置对象---")
redisTemplate.opsForValue().set(testKey, user)
val user = redisTemplate.opsForValue().get(testKey) as? User
log.info("---打印值:$user---")
redisTemplate.delete(testKey)
}