@RedisHash를 사용하면 JPA 처럼 엔터티를 만들고 사용자가 지정한 @Id를 통해 redis repository를 호출해 save만 하면 자동으로 insert를 해준다. 전 프로젝트에서는 이 기능을 몰라서 직접 redis에 저장하고 그랬는데 편리한 기능인것 같다.(토큰 관리용으로)
@RedisHash(value = "refresh_token")
class RefreshToken (
@Id
@Indexed
var id: String,
var token: String
)
# redis에서 키 호출하기
hgetall refresh_token:026e9561-e26b-4ffa-b343-bb2f6a2f7a14
# result
1) "token"
2) "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJhYmNAdGVzdC5jb20iLCJpYXQiOjE2ODQ2NzI3NDh9.pOEtpo3M5GX_NIG3dhnDIrxqcJbEvFg-CJ9mMFU4JB8"
3) "id"
4) "026e9561-e26b-4ffa-b343-bb2f6a2f7a14"
method()?.let { userMapper.mapToDomainEntity(it) }?: throw ApiException(404, "Email not existed...")
이런식으로...
여기서 코틀린은 null safety 한 언어인데 null을 왜 사용하냐는 생각이 들 수 있으나, 자바는 모든 타입을 null로 지정할 수 있어서 문제였지만 코틀린에서는 개발자가 null로 쓸 애들만 null type이 가능하다고 지정해 줄 수 있기 때문에 나는 nullable을 쓰는게 나쁘지 않다고 생각한다.. 나중에 생각이 바뀔 수 있지만 일단 현 시점 느낀점은 이렇게 기록을...