跳至主要内容

Spring Cache

Cache 추상화 이해하기

핵심부분에서 추상화는 Java method에 캐싱을 적용함으로써 캐시에 보관된 정보로 메서드의 실행 횟수를 줄여준다. 즉 대상 메서드가 실행될때마다 추상화가 해당 메서드가 같은 인자로 이미 실행되었는 확인하는 캐싱 동작을 적용한다. 해당 데이터가 존재한다면 메서드를 실행하지 않고 결과를 반환하고 존재하지 않는다면 메서드를 실행하고 그 결과를 캐싱한 뒤에 사용자에게 반환해서 다음번 호출시에 사용 할 수 있게 한다.

Spring cache는 cache 추상화를 지원하는데 EhCache, Redis, Couchbase 등 캐시 저장소와 빠르게 연동하여 bean으로 설정 할 수 있도록 도와준다.

선언적인 어노테이션 기반의 캐싱

@Cacheable 

메소드에 지정 가능하고 지정된 메서드의 캐시 설정에 따라 데이터가 한번 생성되면 데이터가 캐싱되며, 다음 호출 시에 캐시에 저장된 데이터가 리턴된다.
@Cacheable 설정 옵션은 다음과 같다.
  • value
    • 캐싱 공간의 대표 명칭
  • key
    • Spring Expression Language(SpEl)으로 key생성을 지정 
    • 지정하지 않으면 모든 파라미터를 조합한 해시코드 값을 키로 생성
  • condition
    • 조건부 캐싱. SpEL로 지정하고 표현식이 true면 메서드를 캐시
사용가능한 SpEL evaluation context
이름위치설명예시
methodNameroot object호출되는 메서드의 이름#root.methodName
methodroot object호출되는 메서드#root.method.name
targetroot object호출되는 대상 객체#root.target
targetClassroot object호출되는 대상 클래스#root.targetClass
argsroot object대상을 호출하는데 사용한 인자(배열)#root.args[0]
cachesroot object현재 실행된 메서드 캐시의 컬렉션#root.caches[0].name
argument nameevaluation context메서드 인자의 이름. 어떤 이유로든 이름을 사용할 수 없다면(예: 디버깅 정보가 없는 경우) a<#arg>에서 인자 이름을 사용할 수도 있고 #arg은 (0부터 시작하는) 인자의 인덱스를 의미한다.iban나 a0 (p0를 사용하거나 별칭으로 p<#arg> 형식을 사용할 수 있다)












유의해야 할 점

@Cacheable은 Spring AOP를 이용하기 때문에 동일한 클래스 내 @Cacheable이 설정된 메서드를 호출할 경우 캐싱된 결과를 가져오지 못하고 메서드를 재실행 한다. 이를 해결하기 위한 방법은 internal call이 아닌 Proxy Bean를 참조하여 캐싱된 데이터를 받아 오는 것이다.

[참고]   https://ifuwanna.tistory.com/202
















评论

此博客中的热门博文

Pandas Plot

pandas.DataFrame.plot.bar import matplotlib.pyplot as plt import pandas as pd import numpy as np df = pd.DataFrame(np.random.rand(5, 4).round(1),                   index=['snail', 'pig', 'elephant','rabbit', 'giraffe'],                   columns=pd.Index(['speed', 'lifespan', 'active', 'cuite'],                   name='Genus')) ax = df.plot(kind='bar',figsize=(10,4), rot = 0) plt.show() ==> output in Pycharm

GIS

GIS 데이터 유형 Vector : 현실 세계를 점, 선, 면으로 표현  Raster : 현실 세계를 픽셀 단위로 표현 점, 선, 면을 Feature라 함 여러개의 Feature가 모이면 Dataset 여러개의 Dataset이 모이면 DataSource dataset은 geometry공간좌표(x, y)와 attribute로 구성 좌표계(coordinate system) 지리적인 데이터정보들을 통합하여 사용할 수 있도록 위치를 정해줌 좌표계의 종류 지리좌표체계 투영좌표체계 https://m.blog.naver.com/PostView.nhn?blogId=rsmilee&logNo=220651379673&proxyReferer=https%3A%2F%2Fwww.google.com%2F Pan 패닝: 마우스 움직임에 따라 해당되는 지도 영역이 보이는것? http://mcms.daegu.ac.kr/user/chodh/user_source/gis01.htm OpenStreetMap은  Mercator projection( "EPSG:3857" )을 사용 ol.proj.transform로 지리좌표( 경도 위도 ) 를  Mercator projection좌표계로 전환 축척 - 지도상에서 1유닛이 나타내는 거리값 Resolution(지도 해상도) - 현재 축척에서 1픽셀이 표현하는 거리값 https://www.muhanit.kr/%EA%B8%B0%EC%88%A0%EB%B8%94%EB%A1%9C%EA%B7%B8/openlayers%EC%9D%B4%EC%9A%A9-map%EC%9C%BC%EB%A1%9C%EB%B6%80%ED%84%B0-%EC%B6%95%EC%B2%99-%EA%B5%AC%ED%95%98%EA%B8%B0 Layer -  热度图层(heatmaplayer) 、 图片图层(imagelayer) 、 切片图层(tilelayer)  和...

Intellij DB Setting

  SQL Dialects → SQL 문법을 선택 파일 배경색 변경 quick documentation을 활용하자!