최종 전 마지막 프로젝트 끝...
ec2 서버 접속, 레디스 적용, 캐시전략, nGrinder 성능 테스트 등 짧은 프로젝트 기간 동안 많이 배웠다.
뭐든 기록하는 습관을 들여야 남는게 있을 것 같다.
그리고 무슨 기술이든 사용하는 이유, 근거가 충분해야지 의미가 있다.
최종 프젝 전 주말동안 밀린 강의 듣고 책 첫 장 한 번 보고 해야 할 일 정리해야지!!!!
properties 속성으로 중요 데이터 값 참조하기
~.yml 파일에 있는 값을 다음과 같이 Properties 클래스를 만들어 가져오고 Config 에서 명시해준다.
@ConfigurationProperties(prefix = "spring.data.redis")
class RedisProperties(
val host: String,
val port: Int
)
@Configuration
@EnableConfigurationProperties(JwtProperties::class, RedisProperties::class)
class PropertyConfig
CustomSliceImpl
class CustomSliceImpl<T> @JsonCreator(mode = JsonCreator.Mode.PROPERTIES) constructor(
@JsonProperty("content") content: List<T>?,
@JsonProperty("size") size: Int,
@JsonProperty("hasNext") hasNext: Boolean
) : SliceImpl<T>(content!!, PageRequest.of(0, size), hasNext) {
@JsonIgnore
override fun getPageable(): Pageable {
return super.getPageable()
}
}
@JsonIgnore
해당 메소드나 필드의 결과값이 JSON 으로 직렬화 되는 과정에서 무시된다.
잭슨은 제이슨 중첩문제?
바이너리형태로 해결
직렬화를 하려면 객체가 Serializer 상속
이게 안될 때 다른 해결책
REDIS 캐싱 결과
@Cacheable(value = [GET_BUBBLES_BY_KEYWORD], condition = "#bubbleId == null")
fun searchBubblesWithCaching(bubbleId: Long?, keyword: String, pageable: Pageable): CustomSliceImpl<BubbleResponse>? {
return bubbleRepository.searchBubbles(bubbleId, keyword, pageable)
}
키워드 검색 시 "KEYWORD" key로 캐싱
@Cacheable(value = [GET_ALL_BUBBLES], condition = "#bubbleId == null")
fun getBubblesWithCaching(bubbleId: Long?, pageable: Pageable): CustomSliceImpl<BubbleResponse>? {
return bubbleRepository.getBubbles(bubbleId, pageable)
}
전체 조회 시 "BUBBLES" key 로 캐싱
@Transactional
@CacheEvict(value = [GET_ALL_BUBBLES, GET_BUBBLES_BY_KEYWORD], allEntries = true)
fun delete(bubbleId: Long, memberPrincipal: MemberPrincipal) {
val bubble = getByIdOrNull(bubbleId)
if (bubble.id != memberPrincipal.id) {
throw HasNoPermissionException()
}
bubbleRepository.delete(bubble)
}
bubble 삭제 시 키워드 검색, 전체 조회 캐시 삭제
'왕초보일지' 카테고리의 다른 글
스프링 부트 build contextLoads() Failed (1) | 2024.03.06 |
---|---|
240227 TIL | ERD 설계 고민 (2) | 2024.02.29 |
240221 TIL | 직렬화 역직렬화? (0) | 2024.02.21 |
240220 TIL | 더미 데이터 집어넣기 (0) | 2024.02.20 |
240219 TIL | (0) | 2024.02.19 |