2012-06-27 3 views
3

나는 Spring과 Ehcache와 함께 사용하도록 고안된 항아리를 쓰고있다. Spring은 각 요소에 대해 정의 된 캐시가 있어야하므로 jar에 대해 Ehcache를 정의 할 계획이었습니다. 응용 프로그램의 기본 Ehcache 구성으로 가져올 수있는 jar의 리소스로 배치하는 것이 좋습니다. 그러나 example Ehcache config file과 Google 검색에서 하위 Ehcache 설정 파일을 가져 오는 방법이 없습니다.ehcache 설정 파일을 분할 할 수 있습니까?

하위 Ehcache 구성 파일을 가져 오는 방법이 있습니까? 아니면이 문제를 해결할 다른 방법이 있습니까?

+0

관련 항목 (가능한 dup?) : [여러 프로젝트, 같은 전쟁에서 여러 개의 ehcache.xml을 사용할 수 있습니까?] (http://stackoverflow.com/q/8834993/16487) –

답변

1

스프링에서 EhCacheManagerFactoryBean으로 확장하려면 (다소 정직하기 만하면됩니다) 비슷한 작업을 수행했는지 (내 Ehcache xml 파일의 일부 자리 표시자를 바꿉니다. 즉시 Ehcache xml 설정 파일을 생성하십시오.

afterPropertiesSet()CacheManager 인스턴스를 생성하려면 구성을 가리키는 InputStream을 넘겨주십시오. 내 필터링 물건

@Override 
public void afterPropertiesSet() throws IOException, CacheException { 
    if (this.configLocation != null) { 
     InputStreamSource finalConfig = new YourResourceWrapper(this.configLocation); // put your custom logic here 
     InputStream is = finalConfig.getInputStream(); 
     try { 
      this.cacheManager = (this.shared ? CacheManager.create(is) : new CacheManager(is)); 
     } finally { 
      IOUtils.closeQuietly(is); 
     } 
    } else { 
     // ... 
    } 
    // ... 
} 

나는 내부적으로 최종 설정을 유지하기 위해 ByteArrayResource을 사용했다. 하나는 더 멋진 물건을 할 (봄에 대한 지원을하고있다) 프리 마커와 같은 실제 템플릿 엔진을 사용하여 생각할 수하는 주형 "진짜"를

data = IOUtils.toString(source.getInputStream()); // get the original config (configLocation) as string 
// do your string manipulation here 
Resource finalConfigResource = new ByteArrayResource(data.getBytes()); 

.

관련 문제