2012-12-14 2 views
4

TemplateCache (개인 및 구성 뒤에 숨겨져 있음)에 이미있는 템플릿 목록을 가져 오려고합니다.FreeMarker가 TemplateCache에 캐시 된 템플릿 목록을 가져옵니다.

템플릿에 작은 관리 UI를 작성하고 이미 캐시 된 것을 표시하고 모든 템플릿이 아닌 특정 템플릿에 configuration.removeTemplateFromCache(String)을 호출하려고합니다 (clearTemplateCache이 너무 많아 파일 IO가 너무 많음). 제 대안은 집합에 템플릿 이름의 병렬 목록을 유지하고이를 키 목록으로 사용하는 것입니다. 그러나 일관성을 위해 FreeMarker을 제공하면 좋을 것입니다.

또한 구성 뒤에 TemplateCache 내용을 숨기는 이유가 있습니다 (공용 메서드를 통해 키를 제거 할 수 있지만 키 목록은 제거 할 수 없음). 반 패턴 같아.

답변

1

TemplateCache은 일종의 구현 세부 사항입니다 (Java는 FreeMarker 패키지에만 표시되도록 허용하지 않으므로 공용이라고 생각합니다). 더 나은 질문은 Configuration에서 CacheStorage을 얻을 수없는 이유입니다. 어쨌든, 문제가있는 경우 FreeMarker는 템플릿 목록을 알지 못합니다. CacheStorage 인터페이스가이를 쿼리하는 방법을 제공하지 않기 때문입니다. 그러나 자신의 CacheStorage 구현을 Configuration.setCacheStorage을 통해 구현할 수 있으며 그러한 방법을 제공하고 FreeMarker 외부의 참조를 유지할 수 있습니다. 네, 어쨌든 Configuration에서 가져올 수 없다는 것은 어색합니다.하지만 밝은면에서는 원하는만큼 캐시 활동을 모니터링 할 수 있습니다.

업데이트 : FreeMarker 2.3.20은 Configuration.getCacheStorage()이므로 더 이상 숨겨지지 않습니다.

+0

내가 넣은 내용을 추적하고 내용을 표시하고 캐시를 새로 고치기 위해이를 사용하기 위해 Set 을 추가했습니다. 잘 작동하는 것 같습니다. –

관련 문제